You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redux Toolkit中users变量始终为undefined的问题求助

问题描述

我尝试在Redux Toolkit的slice中向state.users添加用户,相关代码如下:

userManagementSlice.js

import { createSlice } from '@reduxjs/toolkit'

const initialState = {
  users: [],
}

export const userManagementSlice = createSlice({
  name: 'userManagement',
  initialState,
  reducers: {
    addUser: (state, action) => {
      const user = action.payload;
      state.users.push(user);
    },
  },
})

// Action creators are generated for each case reducer function
export const { addUser } = userManagementSlice.actions

export default userManagementSlice.reducer

组件关键代码

const [firstName, setFirstName] = useState();
const [lastName, setLastName] = useState();
const users = useSelector((state) => state.users)
const dispatch = useDispatch()

const addUser2 = () => {
    const user = {
        firstName,
        lastName
    }
    dispatch(addUser(user));
}

useEffect(() => {
    console.log('USERS UPDATED: ' + users);

    // reset inputs
    setFirstName('');
    setLastName('');

}, [users]);

configureStore配置

import { configureStore } from '@reduxjs/toolkit'
import userManagementReducer from '../features/userManagement/userManagementSlice'

export const store = configureStore({
  reducer: {
    userManagement: userManagementReducer,
  },
})

问题:组件中useEffect打印的users始终为undefined,请问哪里出错了?


错误原因与解决方案

错误根源

你在组件中通过useSelector((state) => state.users)获取用户列表,但Redux根状态的结构由configureStore中reducer对象的键决定。在你的store配置里,userManagementReducer被挂载在userManagement这个根键下,全局状态的实际结构是:

{
  userManagement: {
    users: []
  }
}

直接访问state.users自然会得到undefined。

修正方案

修改组件中的useSelector语句,正确指向userManagement下的users数组:

const users = useSelector((state) => state.userManagement.users)

修改后,组件就能正确获取Redux状态中的用户列表,dispatch添加用户后,useEffect也会正确触发并打印更新后的用户数组。


内容的提问来源于stack exchange,提问作者random512

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 09:35:17