Reactjs 通过setState更新嵌套数组元素

Reactjs 通过setState更新嵌套数组元素,reactjs,typescript,setstate,Reactjs,Typescript,Setstate,我正在尝试设置输入字段的状态 我想在按键时更新特定的输入值 setState状态看起来很好,但渲染部分的映射函数出现错误。 (this.state.form[this.state.mode].form.map) 我不明白为什么它会在地图上出现 导出类型IMode=“login”|“忘记”; 输出接口输入{ 值:字符串; 错误:字符串; id:字符串; 名称:字符串; 占位符:字符串; 键入:“文本”|“密码”; } 导出接口IState{ isRequestPending:布尔值; 背面错误:字

我正在尝试设置输入字段的状态

我想在按键时更新特定的输入值

setState
状态看起来很好,但渲染部分的映射函数出现错误。 (
this.state.form[this.state.mode].form.map

我不明白为什么它会在地图上出现

导出类型IMode=“login”|“忘记”;
输出接口输入{
值:字符串;
错误:字符串;
id:字符串;
名称:字符串;
占位符:字符串;
键入:“文本”|“密码”;
}
导出接口IState{
isRequestPending:布尔值;
背面错误:字符串;
模式:IMode;
表格:{
[输入IMode]:{
名称:字符串;
方法:字符串;
动作:字符串;
字段:IInput[];
};
};
}
在构造函数中
此.state={
isRequestPending:错误,
背靠背错误:“”,
模式:“登录”,
表格:{
登录:{
名称:“登录”,
方法:“,
行动:“,
字段:[
{
值:“”,
错误:“”,
id:“测试”,
占位符:“登录”,
键入:“文本”,
名称:“登录”
}
]
},
等等
}
};
私有handleFormInput=(e,输入:IInput,索引)=>{
this.setState((prevState)=>({
…国家,
背靠背错误:“”,
表格:{
…prevState.form,
[此.state.mode]:{
…prevState.form[此.state.mode],
字段:{
…prevState.form[this.state.mode].字段,
[索引]:{
…prevState.form[this.state.mode].字段[索引],
值:“它工作,但地图崩溃”
}
}
}
}
}

您正在将
字段
转换为一个
对象
,该对象不包含
映射
方法。请像这样更新您的状态

this.setState(prev =>({
   /*...*/
   fields : prev.form[this.state.mode].fields.map((field, i) =>{
       if(i !== index) return field
       return {
           ...field,
           value : 'foo'
       }
   })
}))