如何防止应用使用重新选择器

时间:2017-09-05 04:14:24

标签: reactjs react-native redux

我正在使用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(data2dataN ...或state.data)进行重新排序。换句话说,data1data2 ... dataN被采用。现在我希望我的sortedDataSelector功能在任何dataX更改时只重新排序dataX。怎么做?

1 个答案:

答案 0 :(得分:0)

使用不可变库解决了问题