useSelector(来自 Redux +React)返回未定义

问题描述 投票:0回答:1

我使用 React + TypeScript 进行开发,并使用 Redux 进行集中状态管理 - 存储当前登录的用户。

这是 userReducer:

这里是商店:

这是我的 React 组件内的代码片段,我尝试在其中访问用户状态:

我不确定为什么

useSelector
返回未定义,因为我已经在
userReducer
中定义了一个初始状态。

reactjs redux
1个回答
0
投票

因为你将根状态定义为

{user}
。 换句话说,
userReducer
的数据作为
state.user
附加到根状态。

所以,您的选择器需要是

state => state.user

您的商店文件也有问题。您已经使用 const rootReducer = combineReducers({userReducer}) 创建了

另一个 
减速器函数,然后从中推断出
RootState
类型。

这有两个错误:

  • 那个减速器功能根本没有被使用!
    configureStore
    已经根据您提供的定义创建了自己的根减速器函数,并且正在使用它
  • 您的
    RootState
    类型是错误的,因为它是从错误的函数推断出来的

这就是为什么你在这里甚至没有收到 TS 错误。

相反,您需要删除

combineReducers
行,然后执行:

type RootState = ReturnType<typeof store.getState>

根据我们的 TS 使用文档:

© www.soinside.com 2019 - 2024. All rights reserved.