我正在使用reselector阻止我的应用重新计算数据。
就我而言。我有这样的嵌套redux
状态:
state: {
data: [
data1:[1, 2, 3],
data2: [7, 8, 9, 10],
...
dataN: [4, 5, 6]
]
}
如果我像这样写选择器:
// assume that my redux state like above sample
const dataSelector = state => state.data;
export const sortedDataSelector = createSelector (
dataSelector,
data => {
let sorted = [];
// i sort data here
data.map(dataX => {
dataX.sort(_sort);
sorted.push(dataX);
})
return sorted
}
)
function _sort(a, b) {return a>b };
然后我在我的sortedDataSelector
中使用mapStateToProps
,如下所示:
const mapStateToProps(state) {
return {
soredData: sortedDataSelector(state);
}
}
最后,当其中一个dataX发生变化时,我的应用会对data1
中的所有dataX(data2
或dataN
...或state.data
)进行重新排序。换句话说,data1
,data2
... dataN
被采用。现在我希望我的sortedDataSelector功能在任何dataX更改时只重新排序dataX。怎么做?
答案 0 :(得分:0)
使用不可变库解决了问题