- 발행일
편집 중 트리를 누르면 입력이 사라졌다 — 되돌린 선택이 다시 화면을 지우는 문제
인스턴스를 편집하다 왼쪽 트리의 다른 노드를 누르면 입력한 게 전부 날아갔습니다. confirm으로 되묻는 것까지는 쉬웠는데, "취소"를 눌러 선택을 되돌리는 그 동작이 다시 select 이벤트를 쏴서 결국 화면이 지워졌어요. 이어서 같은 화면의 e2e가 간헐 실패하던 것도 jstree refresh()가 비동기라는 같은 뿌리였습니다.
인스턴스를 편집하다 왼쪽 트리의 다른 노드를 누르면 입력한 게 전부 날아갔습니다. confirm으로 되묻는 것까지는 쉬웠는데, "취소"를 눌러 선택을 되돌리는 그 동작이 다시 select 이벤트를 쏴서 결국 화면이 지워졌어요. 이어서 같은 화면의 e2e가 간헐 실패하던 것도 jstree refresh()가 비동기라는 같은 뿌리였습니다.
useState를 바닐라 JS로 흉내 내봤던 스터디 글입니다. 다시 보니 두 가지가 보여요 — 내가 만든 건 사실 useState가 아니라 구독 기반 외부 스토어(zustand 쪽)였다는 것, 그리고 진짜 useState의 핵심(훅 호출 순서로 상태 슬롯을 찾는 커서)은 하나도 구현하지 않았다는 것. 원 코드를 두고 그 간극을 정리했습니다.
useEffect를 바닐라 JS로 흉내 냈던 스터디 글입니다. 개고하며 돌려보니 버그가 둘 있었어요 — deps 비교가 "배열 전체 vs 항목 하나"를 비교해 항상 변경으로 판정되고, 정작 첫 호출에는 effect가 실행되지 않습니다. 원 코드와 버그 분석, 그리고 커서 모델로 고친 버전을 실었습니다.
면접 대비로 정리했던 이벤트 루프·V8·마이크로태스크 문답입니다. 당시엔 "면접용 지식"이라고 생각했는데, 이후 실무에서 정확히 이 지식으로 풀린 버그들이 있었어요 — 렌더 직후 getBBox가 0을 주던 문제, 구독 콜백의 stale closure. 문답 정리 뒤에 그 순간들을 붙였습니다.