javascript - 如何在反应中通过单击按钮来捕获映射数据?
问题描述
我用 react 创建了以下组件。我正在加载JSON 数据以填充表格,其中一列有一个删除按钮。要删除您的用户,我需要在单击按钮后获取用户 ID 。我可以为每个表格行加载一个删除按钮,但我无法为每个按钮单击获取用户 ID。
加载页面后,控制台会立即加载所有用户 ID,而无需单击删除按钮。单击删除按钮后,如何获取特定用户的用户 ID?
零件:
class EnhancedTable extends React.Component {
constructor(props) {
super(props);
this.state = {
data: [],
userID: null
};
this.deleteUserById = this.deleteUserById.bind(this);
}
componentDidMount() {
API.post("user/all", [], config).then(({ data }) => {
this.setState({
data: data.response.data.map(user => (user.id, user.name, user.email))
});
});
}
deleteUserById(n) {
console.log("user id", n);
}
render() {
return (
<TableBody>
{data.map(n => {
return (
<>
<TableCell>{n.name}</TableCell>
<TableCell>{n.email}</TableCell>
<TableCell>
<DeleteIcon
onClick={this.deleteUserById(n.id)}
className="action"
/>
</TableCell>
</>
);
})}
</TableBody>
);
}
}
解决方案
您this.deleteUserById
直接在渲染上调用。您想为onClick
prop 提供一个函数,该函数将在事件发生时被调用。
<DeleteIcon onClick={() => this.deleteUserById(n.id)} className="action" />
推荐阅读
- python - 如何将两个一维列表组合成二维数组?
- php - PHP preg_split between Character (prefix) and Number
- postgresql - 在 A 列中搜索 B 列中的字符串匹配项
- ios - sendbird sdk 自动重连
- oracle - pl sql replace multiple values in sequence
- python - 如何将变量传递给python中的类
- java - 如何使用 SharedPreferences 保存更改?
- javascript - How do I submit two forms with one button? (the solutions provided by other similar issues are not working for me)
- node.js - AWS throwing CORS
- html - 使用 Pull Push,列不会在移动视图中互换它们的位置