我正在构建一个过滤器,用户可以根据自己想要的类别类型(例如,餐馆,酒吧,咖啡馆等)过滤数据。用户可以通过选择类别是否为true来使用过滤器(例如,是否显示该特定类别),然后将其发送给我的操作和减速器。您将如何设置reducer来过滤数据,以便仅显示正确的类别?

这是我的filter.js文件(其中shop和food是true还是false):

onButtonPress() {
    const { shop, food }
    = this.state;

this.props.filterRecommendations({ shop, food });


这是我的action.js文件:

export const filterRecommendations = ({ shop, food}) => {
    return {
        type: FILTER_RECOMMENDATIONS_BY_TYPE,
        payload: { shop, food }
    };
};


这是我的reducer.js文件:

export const reducer = (state = INITIAL_STATE, action) => {
    switch (action.type) {
    case FILTER_RECOMMENDATIONS_BY_TYPE:
        return {
            ...state,
                myRecommendations: state.myRecommendations.filter(
            item => item.type === action.payload
            )
        };
};


数据如下所示:

myRecommendations: [
    {
      id: '1',
      name: 'Yes Food',
      type: 'food'
    },
            {
      id: '2',
      name: 'Yes Shop',
      type: 'shop'
    },
]


上面的结果只是清除所有数据。

最佳答案

您可以通过过滤数据来访问对象键:

state.myRecommendations.filter(item => action.payload[item.type])

07-28 02:21
查看更多