Redux过滤阵列

TToprak1

我读过类似的问题,但仍然无法弄清楚。键入时,它会过滤掉屏幕上的项目,但是如果我在搜索框中删除了一个字符,它将不会显示以前的项目。例如,我键入“ ab”会显示所有以“ ab”开头的产品名称,但是,当我删除“ b”或“ ab”时,它不会显示产品,而只会显示一个空白页。

搜索

class Search extends Component {
  handleChange = e => {
    this.props.search(e.target.value);
  };

  render() {
    return (
      <>
        <Input
          type="search"
          name="search"
          placeholder="Search"
          onChange={this.handleChange}
          value={this.props.value}
        />
      </>
    );
  }
}

const mapStateToProps = state => ({
  value: state.value
});

export default connect(mapStateToProps, { search })(Search);

行动

export const search = value => ({
  type: SEARCH,
  payload: value
});

减速器

export const Products = (
  state = {
    products: [],
    comments: [],
    value: ''
  },
  action
) => {
  switch (action.type) {
    ...
    case 'SEARCH':
      return {
        ...state,
        value: action.payload,
        products: state.products.filter(product => product.name.includes(action.payload))
      };
    default:
      return state;
  }
};
wrsx

每次进行过滤时,都会products以您的状态进行更新,因此将对先前过滤的值执行每个连续的搜索。换句话说,您将丢失products阵列的原始副本

您只需要存储搜索值,然后任何订阅的组件都products可以从搜索值中导出过滤的产品。例如:

class Example extends Component {
  render() {
    const filteredProducts = this.props.products.filter(product =>
      product.name.includes(this.props.value)
    );
    return filteredProducts.map(product => ...)
  }
}

const mapStateToProps = state => ({
  value: state.value,
  products: state.products,
});

export default connect(mapStateToProps, { search })(Example);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

滤镜阵列不过滤

来自分类Dev

过滤阵列上的数据

来自分类Dev

递归过滤单元阵列

来自分类Dev

严格过滤阵列

来自分类Dev

Redux不更新阵列

来自分类Dev

阵列过滤器和阵列显示

来自分类Dev

MongoDb过滤器阵列

来自分类Dev

处于Redux状态的阵列列表

来自分类Dev

过滤不在另一个阵列中的阵列

来自分类Dev

过滤后将阵列合并到一个阵列

来自分类Dev

反应阵列状态过滤器清除阵列

来自分类Dev

带阵列的过滤器阵列控制器

来自分类Dev

aurelia视图中的过滤器阵列

来自分类Dev

基于动态准则的高效阵列过滤

来自分类Dev

可观察阵列的剔除过滤

来自分类Dev

在Morphia中过滤嵌入式阵列

来自分类Dev

具有减少和过滤功能的阵列

来自分类Dev

从阵列React过滤过期的卡

来自分类Dev

通过多个条件过滤阵列

来自分类Dev

如何在Powershell中过滤阵列

来自分类Dev

角阵列过滤器应用多个

来自分类常见问题

如何从Redux存储中删除阵列?

来自分类Dev

如何从Redux存储中删除阵列?

来自分类Dev

通过与其他两个阵列进行比较来过滤主阵列

来自分类Dev

过滤另一个阵列中的一个阵列

来自分类Dev

按数字过滤Matlab单元阵列会导致虚假错误

来自分类Dev

用于对象阵列的垫选择过滤器

来自分类Dev

如何处理阵列状态过滤器冲突

来自分类Dev

在ReactJS和ExpressJS上过滤阵列的打印(显示)