Redux store를 브라우저에서 기본적으로 제공해주는 저장소인 localstorage와 sessiongstorage에 저장하게 해주는 라이브러리입니다.
새로고침하거나 앱을 종료해도 store가 리셋되는 것을 방지하기 위해 사용했습니다. redux-persist를 사용하면 저장공간에 있는 데이터가 사라지지 않고, 이를 redux에 불러올 수 있습니다.
//store.js
import { createStore, applyMiddleware } from 'redux';
import logger from 'redux-logger';
import { persistReducer } from 'redux-persist';
import storage from 'redux-persist/lib/storage';
import reducer from '../reducers/reducer';
import thunk from 'redux-thunk';
import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2';
const persistConfig = {
key: 'root',
storage: storage, // localStorage에 redux store를 저장합니다
blacklist: ['token'], // 해당 사항을 제외하고 저장합니다
stateReconciler : autoMergeLevel2,
};
const middleware = [logger, thunk];
const enhancedReducer = persistReducer(persistConfig, reducer);
const store = createStore(enhancedReducer, applyMiddleware(...middleware));
export default store;
- localStorage에 store를 저장하고 싶은 경우
import storage from 'redux-persist/lib/storage
- session Storage에 store를 저장하고 싶은 경우
import storageSession from 'redux-persist/lib/storage/session
store의 변화 값을 확인할 수 있습니다.
새로 고침하거나 웹 서비스를 종료해도 지속될 store 생성합니다.
//index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import store from './store/store';
import { Provider } from 'react-redux';
import { persistStore } from 'redux-persist';
import { PersistGate } from 'redux-persist/integration/react';
const persistor = persistStore(store);
ReactDOM.render(
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<App />
</PersistGate>
</Provider>,
document.getElementById('root')
);