Ram*_*ARI 3 reactjs redux react-redux redux-toolkit
场景是当用户登录时,我将他的用户信息存储在本地存储中,以避免在刷新页面时丢失会话,这是我之前在 Store.js 中使用react-redux 的代码
// import
const reducer = combineReducers({
userLogin: userLoginReducer,
userRegister: userRegisterReducer,
// more reducers
})
const userInfoFromStorage = localStorage.getItem("userInfo")
? JSON.parse(localStorage.getItem("userInfo"))
: null
const initialState = {
userLogin: { userInfo: userInfoFromStorage },
}
const middleware = [thunk]
const store = createStore(
reducer,
initialState, // i used to pass initial state (with userInfo in it) whith createStore
composeWithDevTools(applyMiddleware(...middleware))
)
export default store
Run Code Online (Sandbox Code Playgroud)
这段代码过去对我来说效果很好,当我刷新页面时,我不会丢失会话
现在我正在尝试迁移到 redux-toolkit (我不会更改旧的减速器,我将使用新的代码方式,仅使用 createSlice 和新的减速器)
// import
const userInfoFromStorage = localStorage.getItem("userInfo")
? JSON.parse(localStorage.getItem("userInfo"))
: null
const initialState = {
userLogin: { userInfo: userInfoFromStorage },
}
const store = configureStore({
reducer: {
userLogin: userLoginReducer,
userRegister: userRegisterReducer,
userDetails: userDetailsReducer,
// more reducers
},
initialState, // i don't know if this way is correct to add initial state to configureStore, it doesn't work
})
export default store
Run Code Online (Sandbox Code Playgroud)
configureStore 在我的应用程序中与所有减速器配合良好
小智 11
您添加preloadedState属性:
// import
const userInfoFromStorage = localStorage.getItem("userInfo")
? JSON.parse(localStorage.getItem("userInfo"))
: null
const initialState = {
userLogin: { userInfo: userInfoFromStorage },
}
const store = configureStore({
reducer: {
userLogin: userLoginReducer,
userRegister: userRegisterReducer,
userDetails: userDetailsReducer,
// more reducers
},
preloadedState: initialState,
})
export default store
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6395 次 |
| 最近记录: |