我redux-logger
用来查看redux 状态的前后变化。我的问题是我的状态似乎在发送动作之前发生了变化:
这里显示了after状态是如何更新的(placementName 属性被正确分配)
这里显示了prev状态随着placementName 属性的变化,所以之前的next状态与当前的prev状态不一样,它们总是应该是......
如果我在 chrome 控制台中打开和关闭对象,它会重新评估它,然后之前的下一个状态与当前状态的prev相同。我不知道是什么在改变它!我无法使用它以前的数据更新 redux 状态,因为它总是被覆盖。
我redux-persist
用来让用户使用 React 的服务器端渲染保持登录状态:
const { persistor, store } = configureStore();
const render = Component => {
ReactDOM.render(
<AppContainer>
<Provider store={ store }>
<PersistGate persistor={ persistor }>
<BrowserRouter>
<Component />
</BrowserRouter>
</PersistGate>
</Provider>
</AppContainer>,
document.getElementById('root')
);
};
配置存储():
import { persistStore } from 'redux-persist';
// Add redux-persist's configuration
const config = {
transforms: [immutableTransform()],
key: 'root',
storage
};
const reducer = combineReducers(rootReducer);
const persistedReducer = persistReducer(config, reducer);
// Export the persistor as well
let persistor = persistStore(store);
return { persistor, store };
我不确定是否redux-persist
与问题有关...
编辑
这是我的减速机
[SAVE_INPUTS]: (state, {toSaveInputs}) => {
const savedInputs = state.get('savedInputs');
console.log("\n\nREDUX!\n\n");
// This line here prints the 'new' state before even returning it...
console.log("Saved Inputs State: ", savedInputs);
console.log("To save Inputs: ", toSaveInputs);
const newSavedInputs = [...savedInputs, toSaveInputs];
return state.merge(Map({
savedInputs: newSavedInputs
}));
},
这样做的结果应该是在 redux 状态下toSaveInputs
添加到savedInputs
数组中,但它所做的是用新的输入替换之前状态的数组,然后添加新的toSaveInputs