私はstate
にオブジェクトが含まれています。私はobject property
に基づいてstate
からオブジェクトを削除するdelete apiも持っています。ここでは、コードは次のようになります。反応lodash削除しないでください。
deleteItem(item_to_delete){
const del_item = _.find(this.state.bucket_list, bucklistitem => bucklistitem.name === item_to_delete);
fetch(url(this.props.api) + '/' + del_item._id, {
method: "DELETE",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
});
_.remove(this.state.bucket_list, bucketlistitem => bucketlistitem.name === item_to_delete);
this.setState({ bucket_list: this.state.bucket_list });
}
私は私が悪いである、現在のように変更可能state
を扱っております理解が。したがって、state
のコピーを作成してコピーを変更し、setState
というコードを変更したいと思います。ここでは、コードは次のようになります。
deleteItem(item_to_delete){
let bucket_list_copy = Object.assign({}, this.state.bucket_list); //Copy of state
const del_item = _.find(bucket_list_copy, bucklistitem => bucklistitem.name === item_to_delete);
fetch(url(this.props.api) + '/' + del_item._id, {
method: "DELETE",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
});
_.remove(bucket_list_copy, { name: item_to_delete });
this.setState({ bucket_list: bucket_list_copy });
}
しかし、これはデータベースからオブジェクトを削除しますが、それはcopied list
からは削除されません。何か案は?この
_.remove(bucket_list_copy, bucketlistitem => bucketlistitem.name === item_to_delete);
へ
スプライスとのカップルの手順をスキップだろうか? – iagowp
私はここで何か間違って見ることはありません。 1. Reactライフサイクルで呼び出されたdeleteItemメソッドはどこにありますか? 2.実際にコードをデバッグし、新しい状態を設定する前にその項目がリストから削除されたことを再度確認しましたか? – klugjo