useRef로 DOM 조작하기: 리액트 탈출구의 올바른 사용법
React에서 DOM에 직접 접근해야 할 때 useRef를 사용하는 방법과 주의사항, 그리고 forwardRef와 useImperativeHandle을 이용한 고급 패턴까지 완벽하게 정리했습니다.

개발과 기술에 대한 이야기를 기록합니다.
React에서 DOM에 직접 접근해야 할 때 useRef를 사용하는 방법과 주의사항, 그리고 forwardRef와 useImperativeHandle을 이용한 고급 패턴까지 완벽하게 정리했습니다.

Vite에서 환경 변수가 제대로 로드되지 않는 문제의 원인과 해결 방법을 심층 분석합니다. bundler의 동작 원리, 보안 모델, Docker/CI 환경에서의 동적 주입, 그리고 Monorepo 설정까지 완벽하게 가이드합니다.

React의 데이터 흐름은 단방향(부모->자식)이지만, 가끔은 거꾸로 명령을 내려야 할 때가 있습니다. useImperativeHandle과 forwardRef를 사용해 캡슐화를 유지하면서 자식의 함수를 호출하는 법을 정리해봤습니다.

z-index가 작동하지 않는 문제와 stacking context 이해하기

컴포넌트가 사라진 후 setState를 호출해서 생기는 메모리 누수 경고 해결

부모에서 전달한 props가 undefined로 나와서 앱이 크래시되는 문제 해결

React에서 클로저가 오래된 값을 참조해서 생긴 버그와 해결 방법

useEffect 의존성 배열 때문에 무한 루프에 빠졌던 경험과 해결 방법

개발 중에 코드를 수정했는데 브라우저가 반응이 없나요? 새로고침을 백만 번 하다가 지쳐서 찾아낸 HMR(Hot Module Replacement)의 원리와 고장 원인, 그리고 해결 방법을 '노가다 개발자'의 시선으로 정리했습니다.

kubectl apply -f를 매번 직접 입력하고 있나요? Git을 단일 진실 공급원(SSOT)으로 삼아 인프라와 애플리케이션 배포를 자동화하는 GitOps의 개념을 설명합니다. Push vs Pull 방식의 차이, ArgoCD를 이용한 자동화, 비밀 관리(Secrets) 전략, 그리고 누군가 몰래 설정을 바꿨을 때 이를 감지하는 Drift Detection까지 실제적인 관점에서 다뤄봤습니다.

.gitignore에 분명히 추가했는데 왜 자꾸 변경사항에 뜰까요? Git이 파일을 추적하는 원리를 클럽의 '블랙리스트'에 비유하여 설명하고, `git rm --cached`로 이미 들어온 불청객을 내보내는 방법, 대소문자 이슈, 그리고 CRLF 문제까지 완벽하게 파헤칩니다.

새벽 3시에 실수로 AWS 비밀키가 담긴 파일을 커밋하고 푸시까지 해본 적 있나요? 패닉에 빠져서 파일을 지우고 다시 푸시해도 히스토리는 남습니다. git reset, revert, reflog를 이용해 과거를 조작하고, git stash로 작업 내용을 안전하게 대피시키는 방법, 그리고 git rebase -i로 커밋 역사를 깔끔하게 다듬는 고급 기술까지 '식은땀 나는' 경험담과 함께 정리해봤습니다.

React에서 자식 컴포넌트에 ref를 전달하는 방법이 왜 그렇게 복잡할까요? props로 ref를 전달하려다 실패한 경험부터, forwardRef를 사용하여 우아하게 DOM에 접근하는 법, useImperativeHandle을 통해 필요한 메서드만 노출하는 캡슐화 패턴, 그리고 TypeScript 제네릭과 함께 사용하는 고급 기법까지 상세히 다뤄봤습니다.

대용량 폼에서 입력 지연을 해결하는 디바운싱과 최적화 기법

데이터를 수정했는데 페이지에 계속 예전 값이 나오는 유령 같은 현상. Next.js 13+의 강력한(그리고 사악한) 캐싱 메커니즘을 4계층으로 분석하고, React Query와의 차이점, 그리고 실제 디버깅 전략을 공유합니다.

컴포넌트마다 지저분하게 널려있는 로딩/에러 처리를 우아하게 삭제하는 법. 선언적 UI가 가져다주는 평화.

분명히 클래스를 적었는데 화면은 그대로다? 개발자 도구엔 클래스가 있는데 스타일이 없다? Tailwind 실종 사건 수사 일지.
