我有8个网格框,其中这8个框具有4个属性
id, name, age, location
id是可编辑的,而其他文本是具有Textfield的只读数据,因此我可以根据所选的ID设置值。
现在onChange
事件将传递两个参数(event,index)
例如:
网格框1: event, "0"
网格2: event, "1"
网格框3: event, "2"
......
......
所以,我硬编码,并且具有数组类型状态变量
this.state={
personData:[]
}
handlePersonId = (event, index) =>{
const { personData } = this.state;
personData.push({id:'', name:'', age:'', location:''});
personData[index].id=event.target.value;
this.setState(this.state.personData);
}
如果我按顺序插入并插入数据,则工作正常,但是当我为网格框2、3、4,... 8输入id时,会出现错误,因为我按顺序而不是在特定索引处推送属性因此我得到 undefined 。
预期输出::如果我在网格框5中输入,则传递索引 4 ,事件目标值为 23
[{},{},{},{},{id:'23',名称:'Omkar',年龄:'22',位置:'usa'}]
答案 0 :(得分:0)
如果我理解正确,则您希望:
id
对象中的数据更新personData
数组中现有“人”项目的event
index
的{{1}}处创建一个新的“人”(如果不存在)personData
函数,确保personData
数组中(index
之前)中的项目至少被初始化为空对象要实现这一目标,您可以实现handlePersonId()
,如下所示/在此记录:
handlePersonId()