簡體   English   中英

如何從數組中刪除一個元素並在 FlatList 上沒有該元素的情況下更新狀態?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM