查看 eslint 规则,在 JSX Props 中没有 .bind() 或箭头函数。
它说不要使用、箭头函数或绑定:
<div onClick={this._handleClick.bind(this)}></div>
<div onClick={() => console.log('Hello!'))}></div>
而是使用:
<div onClick={this._handleClick}></div>
这一切都很好,但我如何在点击事件上将参数传递给这个函数?
这是我的天真代码示例:
export class UserList extends Component {
constructor(props) {
super(props);
this.handleToggleActive = this.handleToggleActive.bind(this);
}
handleToggleActive() {
console.log(arguments);
}
render() {
return (
<ul className="user-list">
{this
.props
.users
.map(user => (
<li key={user.id}>
<Link to={`/users/${user.id}`}>{user.name}</Link>
<Button onClick={this.handleToggleActive}>Toggle Active</Button>
</li>
))}
</ul>
);
}
}
我如何获得user.id
我的handleToggleActive
功能?当我尝试类似的事情时:
<Button onClick={this.handleToggleActive(user.id)}>Toggle Active</Button>
它在渲染时执行,我能看到的唯一其他方法是使用箭头函数?
这样做的正确方法是什么?