javascript - 清除输入后无法重置过滤器( react )

标签 javascript reactjs filter

有过滤器,过滤没问题,但是当清除输入时。我看到过滤结果:

filterList(event) {
    var updatedList = this.state.items;
    if (event.target.value !== '') {
    updatedList = updatedList.filter(function(item){
      return item.name.toLowerCase().indexOf(event.target.value.toLowerCase()) !== -1;
    });
  }
    this.setState({items: updatedList});  // now this.state.items has a value
   }

我的条件不起作用。

https://plnkr.co/edit/dPZM9BZVa4uzEMwdNpZ8?p=catalogue script.js 中的完整组件

最佳答案

对此有更好的方法。您通常不想使用 props 直接设置您的状态。您想要的是仅将状态用于过滤的项目集,因为您的 Prop 将始终包含完整的项目集。首先,删除 componentWillReceiveProps 函数。然后更改以下内容:

// in your constructor
this.state = {
  filteredItems: false
}

filterList(e) {
  var value = e.target.value;

  this.setState({
    filteredItems: !value
      ? false
      : this.props.items.filter(function(item) {
        return item.name.toLowerCase().indexOf(value.toLowerCase()) > -1
      })
  })
}

// inside render
var elems = this.state.filteredItems || this.props.items

关于javascript - 清除输入后无法重置过滤器( react ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41896161/

相关文章:

javascript - 自动拖动 ".draggable"元素

javascript - 选择可以添加新记录的框

javascript - 如何在 JMeter 的 Webdriver Sampler 中获取警报消息?

javascript - PHP 联系表单正在打开一个新的浏览器选项卡

node.js - 如何更改 React 中index.html 的路径/文件名?

javascript - React-Redux:我是否必须对单个组件树中的所有组件使用 connect() 和映射状态/调度?有没有办法只做一次?

javascript - 如何在 Reactjs 的菜单中设置 onClick 函数?

javascript - JavaScript 中的 filter() 函数返回的值不等于 0

python通过包含几个键值对作为条件的dict过滤dict列表

if-statement - 将一系列单元格与单个单元格进行比较,然后递增一个值