问题
<button onClick={this.setKey(key)} />
虽然期望的是传递函数引用,然而实际上是函数调用,为了解决这个问题通常存在一些解决方案。
解决
1. 传递一个函数引用
<button onClick={() => this.setKey(key)} />
2. 函数修改为闭包
vm = {
setKey(key) {
return () => console.log(key);
}
}
<button onClick={this.setKey(key)} />
3. 使用 bind 方法
<button onClick={this.setKey.bind(this, key)} />