javascript - 在 ReactJS 中按属性动态过滤
问题描述
我有一个 Javascript 对象数组,我通过映射以显示在表格中
很长,我有一个分页组件,它在我的主要 App.js 组件中有一个事件处理程序
onPageChanged = data => {
const { countries } = this.state;
const { currentPage, totalPages, pageLimit } = data;
const offset = (currentPage - 1) * pageLimit;
const currentCountries = countries.slice(offset, offset + pageLimit);
this.setState({ currentPage, currentCountries, totalPages });
};
在这里我传递了值,我用它来显示每个页面上的元素数量,以及当前页面等。
我有一种按地区过滤的过滤方法
sortRegion = () =>{
const newCountries =this.state.currentCountries.filter(country =>
country.region === this.state.region);
console.log(this.state.region)
console.log(newCountries)
this.setState({currentCountries: newCountries})
}
截至目前,我有一个输入表单,带有一个 onChange 处理程序来更改region
属性的状态
{this.state.countries &&
<div>
<input type="text" placeholder="Get Region" value={this.state.region} onChange={(e) => {this.setState({region: e.target.value)}}/>
<button onClick={this.sortRegion}>Get country by Regions</button>
<Pagination
totalRecords={this.state.countries.length}
pageLimit={4}
pageNeighbours={1}
onPageChanged={this.onPageChanged}
/>
</div>
}
当我按下按钮时,这工作正常,但我希望它是动态的,所以只要有东西改变它就会排序。
我最初的目的是向 setState 传递一个回调来调用处理程序,但这并没有显示任何结果
<input type="text" placeholder="Get Region" value={this.state.region} onChange={(e) => {this.setState({region: e.target.value}, this.sortRegion)}}/>
如何使排序动态化,使其在表单内的 onChange 上起作用?
解决方案
推荐阅读
- gis - 开放层 GeoJson 中的指数坐标表示法
- javascript - 如何在关闭打开的窗口时运行 Javascript 代码?
- c# - C# - 如何删除文本框的多余字符(RFID)
- windows - 如何在 Windows 中将芹菜与烧瓶一起使用?
- angularjs - 如何更改 $scope 变量值并测试 angularjs jasmine
- python - MaxPooling 层的适当尺寸?
- visual-studio-2017 - 在安装程序项目中基于用户删除以前的版本
- amazon-kinesis - 行未添加到 AWS Kinesis 分析 Kinesis 数据流的应用程序内 SQL 流
- angular - 如何让谷歌浏览器在 Angular 4 应用程序中全屏显示?
- xquery - 如何一次性替换多个 XML 节点?数据中心框架