でオブジェクトを更新するためにクリーンな方法私はこのようにフォーマットされたオブジェクトの配列を持っている:ここでは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}、()=> {// your code}') – kurumkan
実際に良い点です。私はsetStateコールバック – Timmo