들어가면서낙관적 업데이트를 처음 접하면, 적용할 수 있는 곳마다 다 쓰고 싶어진다. 서버 응답을 기다리지 않고 UI를 먼저 업데이트하니 인터랙션이 즉각적으로 느껴지고, "이렇게 좋은 걸 왜 안 써?"라는 생각이 자연스럽게 든다. 이번 원정대에서 지오의 코드를 리뷰하다가 상품 수량 업데이트 핸들러에 낙관적 업데이트가 적용된 걸 보고 흥미가 생겼고, step4 장바구니 미션에서 직접 써보기로 했다. 그런데 구현하다 보니 단순히 낙관적 업데이트를 어디에 적용할지가 아니라, 직접 조작한 값이 아닌 그 결과로 파생되는 값을 어떻게 처리할지가 더 큰 고민이었다. 낙관적 업데이트란낙관적 업데이트는 API 응답을 기다리지 않고 UI를 먼저 변경한 뒤, 요청이 실패하면 이전 상태로 되돌리는 패턴이다. 이름 그대로 요청이..
장바구니 미션에서 상품 목록을 렌더링할 때 map을 이렇게 사용했었다. {cartItems.map((item) => ( onToggleItem(item.product.id)} onUpdateQuantity={onUpdateQuantity} onDeleteItem={onDeleteItem} /> ))}그러자 콘솔에 경고가 떴다. 목록에 있는 각각의 자식 요소는 고유한 key를 가져야 한다는 경고였다. 처음엔 의문이 들었다. 이미 각각의 컴포넌트가 화면에 따로 렌더링되고 있으니, 그 자체로 고유한 게 아닌가? 왜 굳이 key를 또 붙여야 할까? 이 질문의 정답을 찾으려면, React가 리스트를 어떻게 비교하는지부터 알아야 한다. k..
들어가기에 앞서이번 JS 파헤치기 원정대를 하며 세운 개인적인 목표는,자바스크립트가 내부적으로 어떻게 동작하는지를 실행 컨텍스트 관점에서 이해하는 것이었다. 원정대원들과 코드를 하나씩 뜯어보는 과정에서, 특히 비동기 파트에서 자주 막히는 순간이 있었다.그 과정 속에서 자연스럽게, 비동기가 자바스크립트에서 얼마나 중요한 개념인지 체감하게 되었다. 그래서 이번 글에서는 비동기 코드를 실마리로 삼아,실행 컨텍스트가 콜 스택에 어떤 순서로 쌓이고 실행되는지 그 흐름을 따라가 보려고 한다. Promise를 다루기 때문에, 이전 글을 먼저 읽고 오는 것을 추천한다. 자바스크립트가 동시에 일하는 척하는 방법 — promise, async/await 편들어가면서이전 글에서는 자바스크립트에서 비동기를 사용하는 이유, ..