【问题标题】:Update Immutable List with only new data that doesn't match prior nested keys?仅使用与先前嵌套键不匹配的新数据更新不可变列表?
【发布时间】:2016-12-07 17:44:19
【问题描述】:

我有一个 immutableJS 列表,仅当新数据的 location.name 与我之前的数据的 location.name 不匹配时,我想附加到该列表。

我以这种格式将初始数据放入列表中(新数据格式相同,对象数组):

[  
  {  
    "location": {  
      "name":"A String"
    }
  },
  {  
    "location": {  
      "name":"A String 2"
    }
  }
]

但是,任何后续数据,只有在位置名称与该州中已经存在的任何先前位置名称不匹配时,我才想附加到这个对象数组。

目前我正在返回状态,但这种方法有很多重复。

case RECEIVE_LOCATIONS:
  return state
    .set('stores', state.get('stores').update(fromJS(action.locations)))

【问题讨论】:

  • 你需要对你的不可变列表使用过滤方法

标签: javascript reactjs redux immutability immutable.js


【解决方案1】:

可以过滤掉重复的位置项

case RECEIVE_LOCATIONS:  {
  const newLocations = fromJS(action.locations).filter((newItem) => (
    !state.get('stores').find((oldItem) => (
      oldItem.location.name === newItem.location.name
    )
  );

  return state.set('stores', state.get('stores').update(newLocations));
}

【讨论】:

    猜你喜欢
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    相关资源
    最近更新 更多