这是我使用内联箭头功能更改onClick
div 路线的组件,但我知道这不是性能方面的好方法
1.内联箭头功能
changeRoute (routeName) {
console.log(routeName)
}
render() {
return (
<>
<div onClick={() => this.changeRoute("page1")}>1</div>
<div onClick={() => this.changeRoute("page2")}>2</div>
</>
)
}
2.如果我使用构造函数绑定,那么如何传递道具?
constructor() {
super(props)
this.changeRoute = this.changeRoute.bind(this)
}
changeRoute (routeName) {
console.log(routeName)
}
render() {
return (
<>
<div onClick={this.changeRoute}>1</div>
<div onClick={this.changeRoute}>2</div>
</>
)
}
3.如果我删除了箭头函数,则该函数将在渲染本身上被调用
changeRoute (routeName) {
console.log(routeName)
}
render() {
return (
<>
<div onClick={this.changeRoute("page1")}>1</div>
<div onClick={this.changeRoute("page2")}>2</div>
</>
)
}
4.如果我使用内联绑定,那么性能也不是最好的
changeRoute (routeName) {
console.log(routeName)
}
render() {
return (
<>
<div onClick={this.changeRoute.bind(this, "page1")}>1</div>
<div onClick={this.changeRoute.bind(this, "page2")}>2</div>
</>
)
}
那么,如何进行传递参数的最佳方式呢?
这也许值得一提的是,原因为何使用内嵌这里arrow功能“是不是在性能方面[A]好办法”是不是因为箭头的功能会以某种方式在本质上缓慢运行(他们不是,在任何情况下,对于像单击处理程序这样很少执行的事情,函数调用的成本完全可以忽略不计),但是因为React每次重新渲染组件时都会创建函数的新实例。内联绑定具有完全相同的问题。无论如何,通常都很好,除非非常频繁地重新渲染组件。
—
Ilmari Karonen
@IlmariKaronen在大多数情况下,组件会频繁重新渲染,因为组件具有输入字段,并且在状态中键入和设置e.target.value会导致频繁渲染。
—
黑暗骑士