更新对象我有此格式对象的数组:使用Javascript - 更清洁的方式在阵列
{
"_id": "590cbcd9bf2b9b18ab3c3112",
"title": "",
"content": "Create Notes Webapp",
"checked": true,
"listID": "590cbc61bf2b9b18ab3c3110"
},
{
"_id": "590cfe5a86fe0908c560c2b0",
"title": "A Note 01",
"content": "My first note.",
"checked": false,
"listID": "590cbe15bf2b9b18ab3c3114"
}
这里是我必须更新每个项目代码:
onTextChange = (key, note, value) => {
clearTimeout(timeoutID);
switch (key) {
default:
break;
case 'title':
note.title = value;
break;
case 'checked':
note.checked = value;
break;
case 'content':
note.content = value;
break;
}
var notes = this.state.notes;
var id;
for (var i in notes) {
if (notes[i]._id === note._id) {
notes[i] = note;
id = i;
break;
}
}
this.setState({ notes },() => { timeoutID = setTimeout(() => this.updateNote(this.state.notes[id]), 3000); });
}
这就是所谓的像这样:
onChange={(e, value) => this.onTextChange('title', note, value)}
难道还有比使用switch语句更好的方法来更新指定的项目物体?此外,是否有一个简单的方法扫描数组的id比for循环?
你为什么使用settimeout?如果你想在setState完成后运行代码,可以这样做:'setState({notes},()=> {//你的代码}') – kurumkan
实际上好点。我忘了我应该在setState回调 – Timmo