簡體   English   中英

Redux FlatList:部分更新數據

[英]Redux FlatList: update partially data

如何使用Flatlist和React-Native在Redux中部分更新我的數據? 我已經嘗試了幾個“不變”庫,但是沒有一個能完美地工作。

Redux商店:

FlatListData: [ { a: 1, aa: 11 }, { b: 2, bb: 22 }, { c: 3, cc: 33 }, { d: 4, dd: 44 }, ];

已下載新數據:

updatedData: [ { b: 2, bb: 44 }, { c: 6, cc: 33 }, { e: 8, ee: 90 }, ];

減速器的外觀如何?

const INITIAL_STATE = { FlatListData: [ { a: 1, aa: 11 }, { b: 2, bb: 22 } ] };

export default function(state = INITIAL_STATE, action) {
      switch (action.type) {
        case UPDATE_RATE:
          return {
            ...state,
            FlatListData: ???   <---
           };
          }}

非常感謝您的幫助!

如果要合並兩個(舊的和新的),則可以展開數組,並向其中添加更新的列表,如下所示:

export default function(state = INITIAL_STATE, action) {
  switch (action.type) {
    case UPDATE_RATE:
      return {
        ...state,
        FlatListData: [
          ...state.FlatListData,
          ...action.updatedData,
        ],
      };
  }
}

如果需要替換現有值,則需要一個公用鍵(一些ID)來標識現有記錄並對其進行過濾。 假設您的數組對象具有一個id:

export default function(state = INITIAL_STATE, action) {
  switch (action.type) {
    case UPDATE_RATE:
      return {
        ...state,
        FlatListData: [
          ...state.FlatListData.filter((x) => 
            !action.updatedData.find((y) => y.id === x.id)),
          ...action.updatedData,
        ],
      };
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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