1

大家好,我正在创建一个选择器来过滤商店中的一些想法,但是当我在选择器上实现它时,它会在对象上创建一条线。

选择器工作正常,但我看到中间线好像不是 100% 好。

我该如何解决?谢谢你的帮助!

产品选择器.ts

export const getAllProducts = createSelector(getProductsState, fromProduct.getAllProducts);

// createSelector with line in middle.
export const getProductsFilter = createSelector(
    getAllProducts,
    (products: IProduct[], filterData: string) => {

        if (filterData === '')
            return products;
        else
            return products.filter(value => value.name.includes(filterData) || value?.description.includes(filterData));

    }

);

从家庭组件

      const data:string='data';
      this.subscription.push(this.store.pipe(select(getProductsFilter, data)).subscribe(....

所有使用 Ngrx && ngrx 创建的实体都更新到最新版本 2021。

当我的鼠标在 createSelector 上显示该消息时

The signature '(s1: SelectorWithProps<object, string, IProduct[]>, projector: (s1: IProduct[], props: string) => IProduct[]): MemoizedSelectorWithProps<object, string, IProduct[], DefaultProjectorFn<...>>' of 'createSelector' is deprecated.ts(6387)
selector.d.ts(32, 4): The declaration was marked as deprecated here.

记住它可以工作,但是这条线感觉有些不对劲。

一张小图

在此处输入图像描述

4

1 回答 1

1

正如上面评论中所说,带有道具的选择器已被弃用 您只需将您的重写selectorfactory selector

export const getProductsFilter = (props: { filterData: string }) => 
  createSelector(
    getAllProducts,
    (products: IProduct[]) => {
      if (props.filterData === '')
          return products;
      else
          return products.filter(value => value.name.includes(props.filterData) || value?.description.includes(props.filterData));
   }
);
于 2021-06-23T08:48:17.723 回答