我已经使用传统的react-redux设置配置了redux-persist,如下所示:
onst persistConfig = {
key: 'root',
storage,
whitelist: ['todos'],
};
const persistedReducer = persistReducer(persistConfig, reducer);
const store = createStore(
persistedReducer,
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
);
const persistor = persistStore(store);
// wrapper
const StateProvider = ({ children }) => {
return (
<Provider store={store}>
<PersistGate loading={<div>Loading...</div>} persistor={persistor}>
{children}
</PersistGate>
</Provider>
);
};
但是,我该如何使用redux-toolkit来配置它呢?到目前为止,我已经尝试过了:
const persistedReducer = persistReducer(persistConfig, todoreducer);
const store = configureStore({
reducer: {
todos: persistedReducer,
},
});
const persistor = persistStore(store);
// wrapper
const StateProvider = ({ children }) => {
return (
<Provider store={store}>
<PersistGate loading={<div>Loading...</div>} persistor={persistor}>
{children}
</PersistGate>
</Provider>
);
};
但是,它不工作。我无法通过const todos = useSelector(state => state.todos);
获得todos
则返回undefined。
5条答案
按热度按时间klsxnrf11#
store.js
Index/App.js
cigdeys32#
Redux Toolkit文档中现在有一个指南,可以帮助您完成这一任务,并提供清除持久化状态和使用RTK Query的建议。
它也有一些代码,你会想要复制和粘贴忽略操作类型
react-persist
调度。这将阻止它抛出错误消息(我得到错误A non-serializable value was detected in an action, in the path:
register.
时,我运行我的React原生应用与博览会)。在撰写本文时,他们代码示例如下所示:
nr9pn0ug3#
在store.js中
在根组件index.js中
z2acfund4#
当使用带有
persistConfig
中的stateReconciles
选项的TypeScript时,您需要一点类型填充以避免unknown
类属推理解是在被提取的式
CombinedState
中,如下所示:mspsb9vt5#
我刚刚用完全类似的设置尝试了这个,它似乎工作。如果它是有帮助的,我在
"@reduxjs/toolkit": "^1.4.0",
,"redux-persist": "^6.0.0"
,和"react-redux": "^7.2.1"
.HTH。