reactjs - 如何调用具有略微更新的 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
在将它发送到减速器之前更改它的值吗?
解决方案
props
在 React 中是不可变的——你不能修改它们。updatedPerson
变量仍然持有对 props 对象的引用。
排队:
updatedPerson.age = newAge;
突变发生。但既然这是不可能的 - 什么都没有改变。
如果你想让它工作,你可以制作一个person
对象的副本。
let updatedPerson = { ...this.props.person };
推荐阅读
- javascript - 拖放javascript中的未定义事件
- mapbox - 简单的 nativescript-community/ui-mapbox 问题:如何移动东西?
- json - 在 Bash 中将环境变量导出为 JSON
- python - 使用 readline 和另一种方法的组合将子进程 stderr 拆分为整洁的日志记录
- javascript - 如何修复 TypeScript 函数类型错误?
- python - Python OpenCV:如何从具有某些重叠颜色的图像中删除背景?
- discord - 有没有办法让一个不和谐的机器人向用户发送上述次数的消息?
- c - 在 C 中使用 GTK 的 GUI 不显示输入的实时值
- java - SAM 构建失败,因为 Maven 安装失败并显示“此项目的打包未将文件分配给构建工件”
- javascript - 还原 | 为什么这家商店的参数类型在第二次点击后会发生变化?