【发布时间】:2017-02-14 03:19:31
【问题描述】:
看看 eslint 规则,No .bind() or Arrow Functions in JSX Props。
它说不使用箭头函数或绑定:
<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>
它在渲染时执行,我能看到的唯一其他方法是使用箭头函数?
这样做的正确方法是什么?
【问题讨论】:
-
这里有相当不错的讨论github.com/airbnb/javascript/issues/659
标签: javascript reactjs eslint