edm*_*rto 5 javascript ecmascript-6 reactjs
我试图理解为什么我们必须将对象null绑定到函数
add(text) {
this.setState(prevState=> ({
notes: [
...prevState.notes,
{
id: this.nextId(),
note: text
}
]
}))
}
render() {
return (
<div className="board">
{this.state.notes.map(this.eachNote)}
<button onClick={this.add.bind(null, "New Note")}
id="add">Add note</button>
</div>
)
}
Run Code Online (Sandbox Code Playgroud)
我们为什么不能这样做this.add("New Note")?
onClick={this.add("New Note")}会立即运行该add()方法,然后将结果设置为onClick.结果add()是未定义的,因为它不返回任何内容.所以我们基本上做到了onClick={undefined}.
因此,为了解决这个问题,我们可以使用匿名函数:onClick={() => this.add("New Note")}
这次,程序this.add("New Note")在单击按钮时正确调用.
或者我们可以利用bind()允许我们声明this上下文和我们想要传递的参数的事实,并简单地使用onClick={this.add.bind(this, "New Note")}(使用this第一个参数将实例绑定为上下文,就像第2段中的箭头函数一样)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |