![](/img/trans.png)
[英]How to remove an element from array, that array is a state of useReducer
[英]How to remove an element from array and update state without that element on the FlatList?
我試圖從它從 JSON 文件data.json
呈現銷售額的 FlatList 中刪除數據問題是,當我刪除具有特定 id 的銷售額並返回主頁時,它再次顯示所有項目。 那么如何從源中刪除項目,並且這些項目將在應用程序的整個生命周期中被刪除,直到用戶關閉並再次重新打開? 任何幫助將不勝感激。
import data from './data.json';
{
"sales": [
{
"id": 1,
"amount": 100
},
{
"id": 2,
"amount": 200
},
]
}
state = {
data: data.sales
}
onPressRemove(id) {
this.setState(
prevState => {
let data = prevState.data.slice();
let newId = 0;
for (var i=0; i < data.length; i++){
if (data[i].id === id){
newId = i;
}
}
data.splice(newId, 1)
return { data };
});
}
這里的問題是,當您轉到應用程序的另一部分時,此組件將卸載,當您返回此組件時,他將安裝並使用導入 (data.json) 中的狀態。 對於這種問題,很多人選擇使用redux 。
另一種方法是將狀態保留在父級上並將其作為該組件的道具,因此即使卸載並再次安裝它仍然保持道具不變(因為父級永遠不會卸載)。
如果您在實施中有更多問題,如果您堅持實施我的答案,請隨時評論/分享您的代碼。
操作后再次更新您的狀態
onPressRemove(id) {
const { data } = this.state;
let filteredData = data.filter(d=> d.id!==id);
this.setState({data:filteredData});
}
除了使用 redux 之外,您還可以使用fs 以編程方式更新 data.json,但由於它變得更加困難,我建議您嘗試使用redux
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.