JavaScript-散布不可迭代实例的无效尝试
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript-散布不可迭代实例的无效尝试,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1395字,纯文字阅读大概需要2分钟。
内容图文
![JavaScript-散布不可迭代实例的无效尝试](/upload/InfoBanner/zyjiaocheng/687/ff46f86a7b854b9cbb91756eb12e4559.jpg)
希望在这里有任何帮助.我有这段代码,它试图在表单字段收到更改时更新我的??州.这在React的先前版本中工作正常,但是在升级到最新版本后,我收到错误消息“无效的尝试传播不可迭代的实例”.
我了解我需要规范我的国家.但是,这将涉及重大重构,我希望通过快速修复避免这种重构.
错误
码
handleMaterialTypeChange = (event, data) => {
const material = this.state.controls.materials.materials;
material[data.searchInput].material_type = data.value;
this.setState(prevState => ({
controls: {
...prevState.controls,
materials: {
...prevState.controls.materials,
materials: [
...prevState.controls.materials.materials[data.searchInput],
...material
]
}
}
}));
};
状态示例:
state = {
controls: {
materials: {
value: "",
materials: [
{
material_type: "",
material: ""
}
],
validation: {
required: true,
minLength: 10
},
valid: false,
touched: false
}
}
}
解决方法:
该错误是由于
[...prevState.controls.materials.materials[data.searchInput],
因为您不能在数组文字中散布不可迭代的对象.
如果您确实想保持“不变”模式,则不应这样做:
const material = this.state.controls.materials.materials;
material[data.searchInput].material_type = data.value;
如果没有上述状态的突变,则可以像这样修改副本:
setState(prevState => ({
controls: {
...prevState.controls,
materials: {
...prevState.controls.materials,
materials: Object.assign([], {
...prevState.controls.materials.materials,
[data.searchInput]: {
...state.controls.materials.materials[data.searchInput],
material_type: data.value
}
})
}
}
}))
内容总结
以上是互联网集市为您收集整理的JavaScript-散布不可迭代实例的无效尝试全部内容,希望文章能够帮你解决JavaScript-散布不可迭代实例的无效尝试所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。