Javascript 问题:当我在儿童中设置状态时,为什么要更新我的父母?只发生在数组上
我有一个应用程序,可以将事件详细信息向下传递到事件列表,并将其传递到表单进行编辑 此表单使用受控元素,因此所有内容都将更新为onChange事件后的状态 出于某种原因,当我将状态设置回表单时,一切都正常(TextField,Switch) 但是,当我尝试使用数组元素时,设置数组元素的状态会将props.event_细节一直更新回原始组件 比如说 编辑之前,请先查看事件列表。单击Edit(编辑),将显示EditEvents(编辑事件): 对摘要和阵列事件会话进行更改,然后单击关闭 摘要未更新,但事件会话数组已更新 密码沙盒 测试页Javascript 问题:当我在儿童中设置状态时,为什么要更新我的父母?只发生在数组上,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我有一个应用程序,可以将事件详细信息向下传递到事件列表,并将其传递到表单进行编辑 此表单使用受控元素,因此所有内容都将更新为onChange事件后的状态 出于某种原因,当我将状态设置回表单时,一切都正常(TextField,Switch) 但是,当我尝试使用数组元素时,设置数组元素的状态会将props.event_细节一直更新回原始组件 比如说 编辑之前,请先查看事件列表。单击Edit(编辑),将显示EditEvents(编辑事件): 对摘要和阵列事件会话进行更改,然后单击关闭 摘要未更新,
我找到了罪犯,这是由于这里的代码。4 为便于解释而简化
const formData, setFormData = React.useState(props.event_detail);
let array_value = formData[name];
array_value[index] = { ...array_value[index], [param]: value };
value = array_value;
setFormData({...formData, [name]=value});
通过改变来解决它
let array_value = Array.from(formData[name);
可能是一个bug,因为它明确表示,它不允许在不回电话给家长的情况下更新儿童道具。如果您可以将示例减少到再现您所观察问题所需的最小值或接近最小值,这将是很有帮助的。这里有很多代码需要通读,还有一些东西没有在这里定义。另外,在Coderpad或JSFIDLE上的一个实例将使调试更容易。@CarsonCrane是对的-如果你真的希望人们提供帮助,你必须让他们更容易提供帮助。。。。。。帮助“我”帮助你。我可能误解了你的意图,但根据React,你应该避免将道具复制到该州Docs@CarsonCrane,感谢您的推荐,在代码沙盒中使用此工具看起来确实更好。@MattOestreich,很抱歉代码太多,已经更新到代码沙盒以便于阅读。谢谢