【问题标题】:Not getting a return from React-redux没有从 React-redux 获得回报
【发布时间】:2021-03-26 02:49:36
【问题描述】:

我想过滤我在 React-Redux 中的商店的结果。为此,我创建了一个过滤器选择器。

我的代码只返回所有“购物者”,而它应该只返回过滤后的购物者。

每个购物者都有一组评论,其中包含(一个或多个)带有评论(文本)和评论编号的对象。我们要过滤评论编号。见打印屏幕:

enter image description here

为了澄清,我想按购物者的评论进行过滤,如果该数字 >= 过滤器,则仅返回符合此条件的购物者。

我在这里做错了什么?我怎样才能让它只返回过滤后的结果?

export const selectShoppersWithFilters = (filters) => (state) => {
  let shoppers = [...state.publicShoppers];

  if (filters.minAverageReview) {
    return shoppers.filter((shopper) => {
      return shopper.reviews.map((review) => {
        if (review.review >= filters.minAverageReview) {
          return (shoppers = shopper);
        }
      });
    });
  }
  console.log(shoppers);
  return shoppers;
};

ps。请耐心等待,我是一名初级开发人员......

【问题讨论】:

    标签: reactjs redux react-redux redux-selector


    【解决方案1】:

    假设您正在尝试过滤“至少有一条评论高于 minAverageReview”的购物者,我认为过滤功能就足够了,您不需要地图。

          return shoppers.filter((shopper) => {
            return
                shopper.reviews.some((review) => review.review >= filters.minAverageReview) 
          });
    
    

    因此,在过滤器函数中,您传递一个回调来检查每个元素并根据您自己的条件决定是否过滤掉该元素,回调函数必须返回一个布尔值。不满足条件的元素(回调返回 false)将被过滤掉。这里我的 some() 检查数组 (shopper.reviews) 是否至少有一个评论元素的评论高于 minAverageReview。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-23
      • 2020-11-11
      • 1970-01-01
      • 2019-03-12
      • 2023-01-27
      • 2018-12-25
      • 2020-10-11
      • 1970-01-01
      相关资源
      最近更新 更多