我使用 React + TypeScript 进行开发,并使用 Redux 进行集中状态管理 - 存储当前登录的用户。
这是我的 React 组件内的代码片段,我尝试在其中访问用户状态:
我不确定为什么
useSelector
返回未定义,因为我已经在 userReducer
中定义了一个初始状态。
因为你将根状态定义为
{user}
。 换句话说,userReducer
的数据作为state.user
附加到根状态。
所以,您的选择器需要是
state => state.user
。
您的商店文件也有问题。您已经使用 const rootReducer = combineReducers({userReducer})
创建了
另一个减速器函数,然后从中推断出
RootState
类型。
这有两个错误:
configureStore
已经根据您提供的定义创建了自己的根减速器函数,并且正在使用它RootState
类型是错误的,因为它是从错误的函数推断出来的这就是为什么你在这里甚至没有收到 TS 错误。
相反,您需要删除
combineReducers
行,然后执行:
type RootState = ReturnType<typeof store.getState>
根据我们的 TS 使用文档: