使用react-redux的useSelector时状态key为reducer名,如何直接获取state.contacts
解决方案
你当前的状态结构携带reducer名称作为顶层键,根源是你在注册reducer到根store时,给对应reducer分配的键名为saveContactsReducer,修改这个键名即可实现需求,具体调整步骤如下:
- 第一步:修改根reducer配置
分两种常见场景调整:
如果你使用原生Redux的combineReducers合并reducer,把原来的配置:
修改为:import { combineReducers } from 'redux' import saveContactsReducer from './你的reducer文件路径' const rootReducer = combineReducers({ // 这里的键名就是state的顶层键名 saveContactsReducer: saveContactsReducer })
如果你使用Redux Toolkit的const rootReducer = combineReducers({ contacts: saveContactsReducer })configureStore配置store,把原来的配置:
修改为:import { configureStore } from '@reduxjs/toolkit' import saveContactsReducer from './你的reducer文件路径' export const store = configureStore({ reducer: { saveContactsReducer: saveContactsReducer } })export const store = configureStore({ reducer: { contacts: saveContactsReducer } }) - 第二步:同步调整
useSelector取值逻辑
之后在组件里获取状态时,直接通过state.contacts取值即可:const { contactsDetails, currentUserName } = useSelector(state => state.contacts)
注意:如果项目其他位置还有通过
state.saveContactsReducer取值的代码,需要同步替换为state.contacts,避免取值为undefined报错。
内容的提问来源于stack exchange,提问作者Seeta Ram Yadav
相关产品推荐
相关产品推荐

