如何调用具有稍微更新的 prop 值的 reducer?
How do I call a reducer with a slightly-updated prop value?
我有一个按钮下拉菜单,它在单击时触发处理程序。此人的年龄是 21 岁,但他们在下拉菜单中单击了一个选项,将自己设置为 30 岁。
handleChange = (newAge: number) => {
let updatedPerson = this.props.person
updatedPerson.age = newAge
this.props.updatePerson(updatedPerson);
};
this.props.updatePerson(updatedPerson)
很好 - 但在我的调试器中我可以看到设置 updatedPerson.age = newAge
实际上并没有更新值 age
。我必须把它放在减速机里吗?我可以在将 updatedPerson
发送到 reducer 之前更改它的值吗?
props
在 React 中是不可变的——你不能修改它们。 updatedPerson
变量仍然持有对 props 对象的引用。
行内:
updatedPerson.age = newAge;
突变发生了。但因为这是不可能的 - 什么都没有改变。
如果你想让它工作,你可以,例如复制 person
个对象。
let updatedPerson = { ...this.props.person };
我有一个按钮下拉菜单,它在单击时触发处理程序。此人的年龄是 21 岁,但他们在下拉菜单中单击了一个选项,将自己设置为 30 岁。
handleChange = (newAge: number) => {
let updatedPerson = this.props.person
updatedPerson.age = newAge
this.props.updatePerson(updatedPerson);
};
this.props.updatePerson(updatedPerson)
很好 - 但在我的调试器中我可以看到设置 updatedPerson.age = newAge
实际上并没有更新值 age
。我必须把它放在减速机里吗?我可以在将 updatedPerson
发送到 reducer 之前更改它的值吗?
props
在 React 中是不可变的——你不能修改它们。 updatedPerson
变量仍然持有对 props 对象的引用。
行内:
updatedPerson.age = newAge;
突变发生了。但因为这是不可能的 - 什么都没有改变。
如果你想让它工作,你可以,例如复制 person
个对象。
let updatedPerson = { ...this.props.person };