今天我将redux合并redux以后发现每次调用store更新状态store会调用所有的reducer来,恰巧我将reducer的default 返回了一个false 。导致我在保存过程中一直给我存我default返回的数据希望大家不要采坑
Store源码
import {createStore, combineReducers, applyMiddleware} from 'redux'
import login from "./reducers/login";
import {persistStore, persistReducer} from 'redux-persist';
import storage from 'redux-persist/lib/storage';
import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2';
import thunk from "redux-thunk";
import permisssion from "./reducers/permission";
const persistConfig = {
key: 'root',
version:0,
storage: storage,
// debug: true,
stateReconciler: autoMergeLevel2 // 查看 'Merge Process' 部分的具体情况
};
//合并状态
const allReducers = combineReducers({login,permisssion});
const myPersistReducer = persistReducer(persistConfig, allReducers);
const store = createStore(myPersistReducer,applyMiddleware(thunk));
export const persistor = persistStore(store)
export default store;
Reducers 源码 login 源码
import {offline_A,online_A} from "../add";
const defaultlogin = false;
function login(prestate = defaultlogin, action) {
const {type, data} = action
console.log("type"+type)
console.log("type"+data)
switch (type) {
case online_A:
return true;
case offline_A:
return false
default:
//return false;
return prestate;
}
}
export default login;
index源码:
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import {BrowserRouter} from 'react-router-dom';
import store from "./redux/store";
import {persistor} from './redux/store';
import {Provider} from "react-redux";
import {PersistGate} from 'redux-persist/lib/integration/react';
ReactDOM.render(
<BrowserRouter>
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<App/>
</PersistGate>
</Provider>
</BrowserRouter>
,
document.getElementById('root')
);