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,它们将是相同的.所以我可以生成一个只有订单中列出的对象的新对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |