一、应用场景:刷新页面后重新加载,数据仍保持原来的状态。redux中的数据存储在localstorage中,而不是cookie中。不是所有的数据都需要永久存储,而是选择性的永久存储。
二、安装命令:npm i redux-persist --save
三、案例
1.store.js
// 1.引入redux
import {combineReducers, createStore, applyMiddleware, compose} from 'redux';
import CityReducers from "./reducers/CityReducers";
import TabbarReducers from "./reducers/TabbarReducers";
import CinemaListReducers from "./reducers/CinemaListReducers";
import ReduxThunk from 'redux-thunk'; // 中间件
import ReduxPromise from 'redux-promise';
// 数据持久化
import {persistStore, persistReducer} from "redux-persist";
import storage from 'redux-persist/lib/storage'
// combineReducers:合并函数
const reducer = combineReducers({CityReducers, TabbarReducers, CinemaListReducers})
// 数据持久化:是指页面刷新后,数据仍然能够保持原来的状态
const persistConfig = {
key: 'myPersist',
storage,
whitelist: ['CityReducers'] // 设置某个reducer数据持久化.whitelist:白名单;blacklist:黑名单
}
const persistedReducer = persistReducer(persistConfig, reducer)
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const store = createStore(persistedReducer, composeEnhancers(applyMiddleware(ReduxThunk, ReduxPromise)));
let persistor = persistStore(store)
export {
store,
persistor
}
export default store
2.主入口文件index.js
import {persistor} from './Store'
import {PersistGate} from 'redux-persist/lib/integration/react';
<PersistGate loading={null} persistor={persistor}>
...
</PersistGate>