我們在使用redux的過程中會出現頁面刷新redux中數據丟失的情況,我們有時候就會用到localstorage,sessionstorage等,但是我們都用了redux,應該儘量避免使用這兩個。
這裏推薦使用redux-persist,他會將你state中的數據放入緩存,保持數據持久化:
首先下載包:
在store中使用
// 引入createStore
import reducer from './../reducer'
import { createStore } from 'redux'
import { devToolsEnhancer } from 'redux-devtools-extension';//redux調試工具
// 存儲機制,可換localStorage等,當前使用sessionStorage
import {persistStore, persistReducer} from 'redux-persist';
import storageSession from 'redux-persist/lib/storage/session'
const storageConfig = {
key: 'root',
storage:storageSession, // 緩存機制
//blacklist: ['name','age'] // reducer 裏不持久化的數據,除此外均爲持久化數據
}
const myPersistReducer = persistReducer(storageConfig, reducer); //persist包裝reducer
const configureStore = createStore(myPersistReducer,devToolsEnhancer());
export const persistor = persistStore(configureStore);
export default configureStore;//返回store
去index.js中用PersistGate包住根組件就可以使用了
import {PersistGate} from 'redux-persist/lib/integration/react';
import {persistor} from './redux/store';
ReactDOM.render(
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<Route />
</PersistGate>
</Provider>
, document.getElementById('root'));
成功存入緩存