我正在尝试在我的React应用程序中实现一个基本过滤器。我有两个由Redux管理的道具。它们看起来如下所示:

const mapStateToProps = state => {
    return {
        groceries: getSortedGrocers(state.groceries),
        searchFilter: state.searchFilter
    };
};


我面临的问题是更新searchFilter时,我需要过滤groceries数组,该数组最终在我的Component实例中是this.props.groceries

最佳的设计模式是什么?我是否应该使用生命周期事件,以便每当更新searchFilter时都过滤groceries?我可以针对如何正确处理过滤问题找到正确的文档吗,如果存在searchFilter,我可以缩小要显示的groceries范围?最终,在某个地方将存在诸如此类的东西:

if ( this.props.searchFilter ) { groceries.filter( ... ) }我不完全确定在哪里处理过滤逻辑。

最佳答案

您应该已经在Redux中的getSortedGrocers函数中完成了过滤。

const mapStateToProps = state => {
    return {
        groceries: getSortedGrocers(state.groceries, state.searchFilter)
    };
};


在Redux getter中:

export const getSortedGrocers = (groceries, filter) => {
    // do sorting here
};


据我所知,这是用于筛选内容的标准设计模式。您也可以对render方法进行过滤,但是不鼓励这样做(尽管效率不高,也很有趣)。

关于javascript - 在mapStateToProps中收到另一个 Prop 时更新 Prop ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49060717/

10-12 15:17