如果我这样写,单击按钮有效
<Menu.Item
key={book.uid}
onClick={() => this.changeColor(book)}
>
但是如果我这样写:
onClick={this.changeName(book)}
点击不起作用。
所以如果函数有参数,我应该使用"() => xxx(argument);否则,我可以使用"this.xxx",对吗?
因为这样做this.changeName(book)
会在渲染时立即调用该函数。你的函数返回的是......不是一个函数,所以当你点击时,什么都不会发生。
并且() => this.changeColor(book)
是一个箭头函数,它具有与以下语法类似(但不是真的)的行为:
() => { this.changeColor(book) }
为避免这种情况,您可以使用第一个代码示例或将函数转换为柯里化函数,并在渲染中保留第二个语法:
changeName = bookInfo => event => {
/* Your code here */
}
在渲染中调用一次时,此函数将返回另一个接收事件的函数并设置第bookInfo
一个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句