- 로그인시 받는 유저 데이터 recoil state 는 새로고침시 날아감
- 새로고침시 마다 유저 정보를 API 요청 → XXXXXX
- recoil state 를 persist
- localStorage를 사용하는 방법이 있음
- 새로고침시 localStorage에 저장해둔 값을 state에 다시 입력
- localStorageEffect.js
function localStorageEffect(key) { return ({ setSelf, onSet }) => { const savedValue = localStorage.getItem(key); if (savedValue != null) { setSelf(JSON.parse(savedValue)); } else { // 로컬 스토리지에 저장된 값이 없으면 로그아웃 처리 localStorage.removeItem(key); localStorage.removeItem('acccessToken'); localStorage.removeItem('refreshToken'); if (window.location.pathname !== '/login') { window.location.href = '/login'; } } onSet((newValue, _, isReset) => { isReset ? localStorage.removeItem(key) : localStorage.setItem(key, JSON.stringify(newValue)); }); }; } export default localStorageEffect;
- store/recoil/index.js
export const userInfoState = atom({ key: 'userInfoState', default: { id: 'M12341234', name: '김철수', accessLv: 3, }, effects: [localStorageEffect('user')], });
- localStorage를 사용하는 방법이 있음
'programming > React' 카테고리의 다른 글
blob/json 형태로 리턴받은 데이터를 엑셀 파일로 추출하기(Get 방식 /Post 방식) (0) | 2023.11.14 |
---|---|
무한 스크롤 구현기(React, Scrollevent, Throttle, Intersection Observer API) (0) | 2023.07.12 |
개발환경에서 CORS 에러 관련 프록시 설정 (0) | 2023.05.03 |
리액트 빌드시 환경(개발/테스트/상용)에 따라 API 주소 설정하기 (0) | 2022.04.04 |
[React] react-router-dom으로 레이아웃 구현, 네비게이션 바로 라우팅 구현, useParams로 파라미터 받 (0) | 2022.03.07 |