javascript - 如何更新reactjs中的对象数组
问题描述
我有一个状态(对象数组),如下所示:
const [state,setstate]=useState({picture:'',name:'',job:''})
我在前端有 3 个输入,它们获取图片、姓名、工作......我定义了一个数组来保存对象集合(由每个人的图片、姓名和工作组成),如下所示:
var colllection=[]
我使用 collection.push({state}) ,但它会覆盖集合并且不会将新状态添加到提到的数组的末尾。知道吗?
解决方案
对于反应状态,您需要替换值而不是更改它。
所以编写如下代码:
const [state, setstate] = useState([]);
const handleAddPerson = person => useState(prev => ([...prev, person]));
当我们想要添加一个人时,我们将状态设置为一个新数组,其中包含原始数组的内容和新对象。
useState
可以传递一个函数而不是传递一个新值,该函数将状态保持的先前值作为参数并返回该状态的新值。
我习惯于使用语法糖来创建一个新数组[...prev, person]
,这可以用普通的 javascript 编写为prev.concat([person])
.
推荐阅读
- mysql - SQL:INNER JOIN,仅在右表中的所有行都满足条件时才返回结果
- kubernetes - 无法访问 Kubernetes 集群
- powershell - 使用 FBX2glTF 将多个 FBX 转换为 glTF
- git - 删除缓存在 git 中的大文件(文件名中有空格)
- flutter - 如何使用测试驱动程序在颤振中测试导航?
- mongodb - mongodb 服务器总是写在磁盘上
- java - 如何使用 Eclipse 减少 Java 中类似模式构建器的复杂代码的缩进
- netbeans - Netbeans 11 终端“无法启动 pty 进程:”
- python - Python shutil.copyfile 名称长度限制
- dart - 如何初始化 pubspec.yaml?