加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

redux – 当对象相同时,如何在更改列表上重新选择?

发布时间:2020-12-15 05:07:27 所属栏目:百科 来源:网络整理
导读:我使用重新选择来获得我的redux状态的一部分.我有一个州的对象列表.我的创建选择器的一个子选择器是此列表的过滤器功能: state = state.list.filter(filterFunction) 所以我把它传递给我的createSelector: createSelector( state = state.list.filter(filt
我使用重新选择来获得我的redux状态的一部分.我有一个州的对象列表.我的创建选择器的一个子选择器是此列表的过滤器功能:
state => state.list.filter(filterFunction)

所以我把它传递给我的createSelector:

createSelector(
  state => state.list.filter(filterFunction),(subsetOfObjects) => subsetOfObjects.map(doSomething)
);

此过滤器函数返回列表中我的对象的子集.因此,如果列表更改,则重新选择始终返回新对象,即使子集未更改,因为列表不相同(完全正确).

如果对象或过滤列表有变化,是否有可能只获得一个新对象?

毕竟我有一个可行的想法:
const list = {


object1: {
    id: 'object1',},object2: {
    id: 'object2',object3: {
    id: 'object3',};

const order = ['object1','object3'];

const selector = (...args) => args.reduce((prev,curr) => ({...prev,[curr.id]: curr}),{});

createSelector(
  ...order.map(id => list[id]),selector,);

行… order.map(id => list [id])将把对象作为参数传播.如果不改变order-array,它们将是相同的.所以我可以生成一个只有订单中列出的对象的新对象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读