首页 > 解决方案 > 如何调用具有略微更新的 prop 值的减速器?

问题描述

我有一个按钮下拉菜单,可在单击时触发处理程序。此人的年龄是 21 岁,但他们单击下拉列表中的一个选项以使自己 30 岁。

handleChange = (newAge: number) => {
  let updatedPerson = this.props.person
  updatedPerson.age = newAge
  this.props.updatePerson(updatedPerson);
};

this.props.updatePerson(updatedPerson)很好 - 但在我的调试器中,我可以看到该设置实际上updatedPerson.age = newAge并没有更新 value age。我必须把这个放在减速器里吗?我可以updatedPerson在将它发送到减速器之前更改它的值吗?

标签: reactjsreduxreact-props

解决方案


props在 React 中是不可变的——你不能修改它们。updatedPerson变量仍然持有对 props 对象的引用。

排队:

updatedPerson.age = newAge;

突变发生。但既然这是不可能的 - 什么都没有改变。

如果你想让它工作,你可以制作一个person对象的副本。

let updatedPerson = { ...this.props.person };

推荐阅读