일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Vue
- react next
- 프로그래머스 데브코스
- Spacer
- 쌓임맥락
- vue mixin
- 폼 입력 바인딩
- 프로그래머스 K_Digital Training
- SCSS use
- 리스트 렌더링
- SCSS import
- vuex map
- 프로그래머스 프론트엔드 데브코스
- 프로그래머스 데브코스 프론트엔드
- vue 지역 컴포넌트
- vue 이벤트 수신
- git 같은계정 다른 컴퓨터
- 고양이 사진 검색기
- postcss
- SCSS forward
- KDT 프로그래머스
- 리액트
- netlify redirect
- intersection opserver
- SCSS extend
- 다른컴퓨터에서 git사용
- KDT 프로그래머스 데브코스 프론트엔드
- nextjs사용법
- flex
- 이벤트 수식어
- Today
- Total
혼자 적어보는 노트
프로그래머스 데브코스 TIL - Day 15 본문
✅ 학습 목차
- [DAY 15] VanillaJS를 통한 자바스크립트 기본 역량 강화 (6)
✅ 새롭게 학습한 부분
- TodoList 만들기 실습 (API 활용)
오늘은 TodoList를 API와 접목시켜서 실습하는 과정에서
처음 알게된 부분이나 기억하고 체크해야 될 부분들을 정리 하기로 했다.
1. 낙관적 업데이트
api요청이 정상적으로 처리될 것이라고 보고
클라이언트 측에 ui로 먼저 업데이트를 시키고 이후에
서버에서 데이터를 받고 업데이트를 하는 방식.
= api의 응답이 느릴 때 사용자의 경험 측면을 향상시키기 위함
좋은 방법이지만 서버측에서 오류가 생겼을 때에는 어떻게 처리해야 할 지
한번 더 고려해보아야 할 것 같다
2. 로딩중 처리
state에 isLoading을 추가하여 api요청 전에 isLoading 값을 true로 변경하고,
api요청에 응답을 받을경우 isLoading의 값을 false로 변경하는 방식을 사용하여
해당 isLoading의 값에 따라 isloading의 UI가 변경되는 로직을 작성하면 된다.
3. input에 작성한 내용 유지하기
input에 글을 작성하다가 새로고침을 했을 때나 페이지를 벗어났다가 다시 돌아왔을 때
작성하고 있던 내용이 유지가 되길 원한다면 localstorage를 사용하여 저장하면 된다!
사용자 경험을 위해 다양하게 localstorage를 사용할 수 있는 것 같다.
부모 엘리먼트에서 submit event를 받을 수 있다?
$userList.addEventListener("submit", (e) => {
// <div><form><input /></form></div> == > div를 통해 받을 수 있음
});
부모 엘리먼트 안에 form이 있을 경우 form에 직접 접근하지 않고
부모 엘리먼트를 통해 sumbit 이벤트를 받을 수 있다. (처음 안 부분!)
특정 url로 접근 했을 때 UI변경
SPA의 경우 ui가 변경됨에 따라 URL이 함께 변경이 되는 것이 아니기 때문에
Todo의 Username을 pathname으로 넣어서 이후에 pathname을 통해 url에 접근 시
해당 내용에 맞는 페이지를 보여주게끔 구현을 해주어야 한다.
[pathname 사용]
const { pathname } = location;
if (pathname.length > 1) {
this.setState({
...this.state,
selectedUsername: pathname.substring(1),
});
await fetchTodos();
}
location.pathname을 사용해도 되지만
location.search를 사용하여 query string으로 불러올 수 있다.
[querystring 사용]
// history, pushState(null, null, `/?selectedUsername=${username}`);
export const parse = (querystring) =>
// '?name=sojin&position=developer'
// &으로 쪼개기
// key=value의 조합을 object 형태로 바꾼다.
// 만들어 진 object를 return하면 아래와 같은 형태로 불러서 쓸 수 있다.
// { keyname } = parse(querystring.substring(1));
querystring.split("&").reduce((acc, keyAndValue) => {
const [key, value] = keyAndValue.split("=");
if (key && value) {
acc[key] = value;
}
return acc;
}, {});
reduce를 사용하여 object를 구성할 수도 있다는 것을 처음 알았다. 😲
reduce를통해 만든 것을 바로 return 하여 구조분해 할당을
사용하여 간략하게 표현하여 사용할 수 있었다.
느낀 점
이번에 강의를 들으면서 이번 주에 냈던 과제가 생각났다.
이렇게 했으면 더 좋았을걸~ 했던 것들이 떠올랐었다.. 이미 제출해서 수정 못함
물론 API를 다루는 과제는 아니였지만 코드를 정리하는 부분들이 조금 미흡했던 것 같다.
제출 전에 어떤 부분을 어떻게 개선하면 좋을까 하며 생각을 했을 땐 잘 보이지 않았었는데
제출을 하고 나서 무심코 코드를 봤을 때 아! 이거 이렇게 할 걸!하며 떠오른 것들이 몇 개 있기도 했다.
머리가 비어 있을 때 새로운게 생각나는 걸 보니 왜 다른 사람들이 잘 안풀릴 때
생각을 비우는 것도 필요하다고 하는지 이해가 되었다..ㅎㅎ
'스터디' 카테고리의 다른 글
프로그래머스 데브코스 TIL - Day 19 (0) | 2022.04.14 |
---|---|
프로그래머스 데브코스 TIL - Day 16 (0) | 2022.04.12 |
프로그래머스 데브코스 TIL - Day 14 (0) | 2022.04.08 |
프로그래머스 데브코스 TIL - Day 13 (0) | 2022.04.06 |
프로그래머스 데브코스 TIL - Day 12 (0) | 2022.04.05 |