javascript - React JS 中的 Angular JS ng-repeat 过滤器替代方案

标签 javascript jquery angularjs reactjs

在 Angular JS 中,我发现了 ng-repeat 的“过滤器”选项,它随实时搜索一起提供。例如:

<div ng-repeat="std in stdData | filter:search">
  <!--
    Std Items go here.
  -->
</div>

<input type="text" placeholder="Search std items" ng-model="search.$" />

这样我们在搜索框中键入的任何项目都会被过滤。我想知道 React JS 中是否有任何替代功能?

最佳答案

React 没有开箱即用的解决方案。

但是,您可以创建自己的搜索框。请参阅以下示例。

该代码段已通过评论进行了很好的处理。这应该对你有帮助。

class Search extends React.Component{
  constructor(props){
    super(props)
    this.state = {
      items: ['car', 'mango', 'stackoverflow', 'computer'], //declare the items to be listed
      searchTerm: null //initial search term will be null
    }
    this.onChange = this.onChange.bind(this)
  }
  onChange(e){
    this.setState({
      searchTerm: e.target.value //set the new serah term to the state
    })
  }
  render(){
    const items = this.state.items.map((item)=>{
      if(!this.state.searchTerm) return <div>{item}</div> //return the items without filter when searchterm is empty
      const regEx = new RegExp(this.state.searchTerm, 'g') //create regex based on search term to filter the items 
      return regEx.test(item) && <div>{item}</div> //if the item passes the regex text, return that item
    })
    
    return <div>
      <input type="text" onChange={this.onChange} placeholder='search'/>
      <div>
        {items}
      </div>
    </div>
  }
}

ReactDOM.render(<Search/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>

关于javascript - React JS 中的 Angular JS ng-repeat 过滤器替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40223854/

相关文章:

javascript - 将 jQuery trigger() 与 hoverIntent 结合使用

javascript - Laravel Mix 和 Turbolinks

jquery - 如何使用 fullCalendar 和 Bootstrap 获取背景颜色

javascript - 通过 .getMonth() 方法获取当前月份

javascript - 为什么在 node.js 上使用 parse 时需要使用 "JavaScript key"?

javascript - "for var in"访问 JS 对象返回所有内容*但*自己的属性?

javascript - 服务需要方法吗?注入(inject) Controller 失败

javascript - 如何在 Angular 表达式中将 String 解析为 Int?

javascript - Angular2 Material md-button错误

javascript - 具有用于 .click 事件的多个按钮的 Ajax 函数