我们在使用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'));
成功存入缓存