java - 如何根据下拉框选择过滤 JavaScript React 表
问题描述
我有一个包含足球运动员数据的表格,例如胜利、失败等。我还有一个包含球员姓名的下拉框。我希望能够从下拉框中选择玩家姓名并过滤表格以仅显示该表格中的数据。我试过使用curr
class F
this.state = { footballStats: [], selectedPlayers: []}
}
componentDidMount() {
fetch('http://localhost:3000/footballstats')
.then((data) => data.json())
.then((data) => this.setState( { footballStats: data, selectedPlayers: data } ));
//.then((data) => this.setState( { footballStats: _.sortBy(this.state.footballStats, 'L') } ));
}
getSelectedPlayers(player) {
if (!player) {
this.setState({selectedPlayers: this.state.footballStats});
}ayer;
})]})
}
}
render() {
let names = this.state.footballStats;
let optionItems = names.map((item) =>
<option key={item.NAME}>{item.NAME}</option>
);
<select onChange={(e) => this.getSelectedPlayers(e)}> {optionItems}
</select>
<br></br>
<br></br>
<table border={1}>
<tbody>
<tr><th></th><th>Code</th><th>Player</th><th>W</th><th>L</th> </tr>
{this.state.selectedPlayers.map((item) => {
return (<tr key={item.TEAMCODE}</td><td>{item.NAME}</td><td>{item.W}</td><td>{item.L}</td><td></tr>);
})}
</tbody>
);
}
}
ReactDOM.render(<FootballStats/>, document.getElementById('root'));
{
"footballStats": [
{
"ID": 1,
"NAME": "Phil Jones",
"TEAMCODE": "MNU",
"W": "17
},
{
解决方案
getSelectedPlayers(e) {
if (!!e.target.value) { //if the user selects the empty (the !! is a cast to boolean)
this.setState({selectedPlayers: this.state.footballStats});
}
else {
this.setState({selectedPlayers: [this.state.footballStats.find((p) => {
return p.NAME = e.target.value;
})]})
}
}
推荐阅读
- ruby-on-rails - Rails 处理 chromium 上的 data-remote=true 表单
- java - 如何使用 Files.newDirectoryStream 和递归以特定方式打印目录树?
- wpf - Background="Red" 中的字符串“Red”如何转换为 SolidColorBrush?
- web - 它们在 prestashop 使用的 smarty 文档中设置变量
- vue.js - 使用 nuxt-auth 成功认证后如何获取用户信息
- android - 如何在 SOTI 托管设备上读取 Android 设备 IMEI?
- python - 使用 PyTorch 进行投影梯度下降
- terraform - 从解码 Json 文件中获取属性并将它们作为字符串添加到 terraform 上的变量中
- excel - 在数据块上运行 Excel 宏
- reactjs - 我想更改在大反应日历中单击日期的特定日期的背景颜色