IT, 개발/Error

Context API refresh(새로고침)시 State undefined 에러

  • -
반응형

에러

Context API를 이용하여 state를 전역관리하고 있다. 그런데 router.push를 이용하면 state 업데이트가 공유가 되지 않고 있다. 혹은 새로 고침시에도 state가 찾을 수 없다고 한다.

해결방법

이럴 때는 localStorage을 활용해보자. 리액트 사용자는 localStorage를 custom Hook, utils, Context API와 결합하여 사용할 수도 있다. 혹은 중요한 정보는 SessionStorage을 활용하자

*localStorage : 데이터를 사용자 로컬에 보존하는 방식으로, 데이터를 저장하고 덮어쓰기, 삭제 등 자바스크립트로 조작이 가능하며, 모바일에서 사용이 가능하다.

*SessionStorage : 로컬스토리지는 브라우저 창을 닫더라도 데이터가 유지되는 반면 세션스토리지는 브라우저가 창을 닫는 순간 영구적으로 데이터를 삭제한다.

// Get localStorage.getItem("dark-mode"); // Set localStorage.setItem("dark-mode", true); // Remove localStorage.removeItem("dark-mode"); // Remove all keys localStorage.clear(); // Get n-th key name localStorage.key(2);
import * as React from "react"; const App = () => { const openLocalStorage = typeof window !== "undefined" ? localStorage.getItem("is-open") : null; const [isOpen, setOpen] = React.useState(JSON.parse(openLocalStorage)); const handleToggle = () => { localStorage.setItem("is-open", JSON.stringify(!isOpen)); setOpen(!isOpen); }; return ( <div> <button onClick={handleToggle}>Toggle</button> {isOpen && <div>Content</div>} </div> ); }; export default App;
반응형

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.