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'
}
})
}))