redux-persist를 쓰게 된다면...

참고로 저는 redux-persist를 사용하는 것을 권장하지 않습니다. (그냥 싫은 느낌...?😅)

왜 사용하고 있나?

  • 파트너 서비스 중 *포스트를 임시 저장하는 기능이 있어 사용하게 되었다.
    • 알아보기 편하게 포스트라는 키워드를 사용하였습니다.

문제점

  • redux 쪽 로직을 수정할 경우 기존에 배포된 앱에서 레거시 redux state와의 충돌
  • 그래서 버전 관리가 필요하다.

그래서 어떻게 만들었나?

  • persistConfig 설정을 바꾸면 된다.
const persistConfig: PersistConfig<any> = {
      version: VERSION,
      key: 'root',
      storage,
      whitelist: [...], // optional
      migrate: (prevState) => {
        if (!!prevState) {
            let state: PersistedState;
            if (prevState!._persist.version !== VERSION) {
                state = {
                    _persist: {
                        rehydrated: true,
                        version: VERSION,
                    },
                };
            } else {
                state = prevState;
            }
            return Promise.resolve(state);
        }
        return Promise.resolve(prevState);
    },
};	
  • VERSION은 상수로 관리를 하면 된다.
// NOTE: 배포할 때마다 버전 올리기
const VERSION = 2.1;
  • prevState!._persist.version !== VERSION
  • 이런 식으로 하면 기존에 localStorage에 있는 값을 날리고 새로운 값을 넣는다.

좋은 웹페이지 즐겨찾기