Redux中dispatch后状态没更新,是写法有问题吗?

迷人的星瑶 阅读 2

我在React组件里调用dispatch更新Redux状态,但页面没反应,store里的值好像也没变。我确定action和reducer都执行了,因为加了console.log能打印出来。

是不是我修改state的方式不对?比如直接赋值了?我试过用展开运算符,但还是不行。下面是我的reducer代码:

const userReducer = (state = { name: 'old' }, action) => {
  if (action.type === 'UPDATE_NAME') {
    state.name = action.payload; // 这里是不是错了?
    return state;
  }
  return state;
};
我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
Code°建云
啊这个问题我昨晚刚遇到过...你直接在原state上改了,redux会认为state没变。要这样写:

const userReducer = (state = { name: 'old' }, action) => {
if (action.type === 'UPDATE_NAME') {
return { ...state, name: action.payload };
}
return state;
};


记住redux必须返回新对象,我之前也踩过这个坑,改完就好了
点赞
2026-03-05 20:20