• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

함수를 넘기는 게 왜 localstorage에 한번만 접속 하는건지 이해가 잘 가지 않습니다

22.06.29 22:11 작성 조회수 315

1

useState(localStorage.getItem("test"));
이거랑
useState(() => {
return localStorage.getItem("test");
});
 
이거랑 결국 함수 실행 시에 localStorage에 접근을 할텐데
왜 랜더링 할 때 1번만 접근한다는건지 개념이 이해가 안가네요

답변 1

답변을 작성해보세요.

0

전자의 코드는

리액트가 매번 렌더링 될때마다(state나 prop이 바뀔때마다 컴포넌트 전체가 리렌더링 되죠. 모든 코드가 다시 실행된다고 생각하시면 됩니다) 로컬스토리지에 접근하게 됩니다.

 

후자의 코드는

초기 렌더링시에만 localstorage에 접근해서 state값을 초기화하고, 리렌더링시에는 접근하지 않습니다.

리액트 문서의 '지연초기화'를 참고해주세요 ㅎㅎ

https://ko.reactjs.org/docs/hooks-reference.html#lazy-initial-state