如何解决包含数组的对象的状态更新无法在react中工作,并且下面的值刚刚被评估,错误
我对包含数组和字符串的对象的状态更新感到困惑。所以,我有两个对象。当前对象(formData)和prevFormState(其中包含当前formData的上一个状态)。因此,它们都包含相同的键但值不同。我分别表示当前值和以前的值。单击提交按钮后,在网络上成功发送当前数据后,我将当前formData状态保存在prevFormState中。
当前formData内容如下所示,
{
agreement: "test agreement"
Id: 289,status: "OPEN"
mcontact_persons: [4]
manufacturer-name: "my_test_manufacturer"
mc-contact_persons: [23]
}
因此,对象的内容类型是array,字符串和数字的组合。我的意思是对象类型和原始类型都可以。
问题是,当我更改基本类型并单击提交按钮时,以前的状态已正确更新,并且显示了以前的数据。
但是,当我通过应用程序站点对数组进行更改时,先前的数据和当前的formData始终相同。
此外,我总是打印要提交的值(该值将存储在prev状态对象中)。就像在console.log中一样,
formdata = {agreement: "test agreement",Id: 289,status: "OPEN",mcontact_persons: Array(2),mc-contact_persons: Array(1),manufacturer-name: "my_test_manufacturer", …}
,但末尾带有一个小“ i”,它表示刚才的值正在评估。甚至,mcontact_persons属性显示Array(2),但实际上(当我单击鼠标并展开到查看内容),它仅包含一个值,即最近的formData值。这是正确的行为吗?
我将以前的状态另存为,
setPrevFormState(formData);
我感觉到,我正在做所有正确的事情,因为此状态更新对于原始类型可以正常工作。但是,能否请您告诉我在发生数组更改的情况下我之前的数据状态与当前状态一样吗?为什么console.log输出会自动更改?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。