【发布时间】:2022-10-20 12:35:04
【问题描述】:
我正在使用 redux-toolkit,并且我试图在每次更新商店后将我的状态保存到本地存储,而不使用任何第三方库。原因是 redux-persist 不再更新,我不知道有什么好的选择。经过大量时间寻找解决方案后,我想出了使用createListenerMiddleware。
import { configureStore, createListenerMiddleware } from "@reduxjs/toolkit";
import counterSlice, { decrement, increment } from "../Slices/counterSlice";
const listenerMiddleware = createListenerMiddleware()
listenerMiddleware.startListening({
actionCreator: increment,
effect: () => (
localStorage.setItem('count', JSON.stringify(store.getState().counter))
)
})
const listenerMiddleware2 = createListenerMiddleware()
listenerMiddleware.startListening({
actionCreator: decrement,
effect: () => (
localStorage.setItem('count', JSON.stringify(store.getState().counter))
)
})
const counterState = JSON.parse(localStorage.getItem('count') || "null")
export const store = configureStore({
preloadedState: {
counter: counterState === null ? { value: 0 } : counterState
},
reducer: {
counter: counterSlice
},
middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(listenerMiddleware2.middleware, listenerMiddleware.middleware)
})
export type RootState = ReturnType<typeof store.getState>
export type AppDispatch = typeof store.dispatch
有人可以告诉我这是否是一个好主意,如果不是,是否有任何其他方法可以正确地做到这一点。
【问题讨论】:
标签: reactjs typescript react-redux redux-toolkit