useSelector(来自Redux +React)返回undefined

3duebb1j  于 2023-06-23  发布在  React
关注(0)|答案(1)|浏览(112)

我正在使用React + TypeScript进行开发,并使用Redux进行集中式状态管理-存储当前登录的用户。
Here is the userReducer:
Here is the store:
Here is the snippet of code inside my React component, where I try to access the user state:
我不知道为什么useSelector返回undefined,因为我已经在userReducer中定义了一个initialState。

syqv5f0l

syqv5f0l1#

因为您将根状态定义为{user}。换句话说,userReducer的数据作为state.user附加到根状态。
因此,选择器必须是state => state.user
您的存储文件也有问题。您已经用const rootReducer = combineReducers({userReducer})创建了 * 另一个 * reducer函数,然后从中推断出RootState类型。
这在两个方面是错误的:

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

这就是为什么你甚至没有得到一个TS错误在这里。
相反,您需要删除combineReducers行,然后执行以下操作:

type RootState = ReturnType<typeof store.getState>

根据我们的TS使用文档:

  • https://redux.js.org/tutorials/typescript-quick-start#define-root-state-and-dispatch-types

相关问题