【发布时间】:2018-12-04 16:35:40
【问题描述】:
我遍历一个项目列表并想调用一个函数 onClick()。下面的例子:
class App extends Component {
state = { items: [1, 2, 3, 4] };
click = i => console.log(i);
render() {
return (
<div>
{this.state.items.map(item => (
<div
key={item}
// this works fine, but I rather not declare functions within the render function / JSX
onClick={() => this.click(item)}
>
{`click on # ${item}`}
</div>
))}
</div>
)
}
}
如您所见,我在 JSX 中声明了一个函数。我一遍又一遍地这样做,但前段时间我了解到,出于性能原因,您应该避免在组件 JSX 本身中声明函数。
对于功能组件也是如此吗?如果是这样,还有其他方法可以将动态信息(在本例中为项目)传递给回调吗?
注意: 我期待在某个时候使用钩子,但现在我只想知道不使用它们的最佳实践。
注意二: 话虽这么说,如果您确定这是一个相关问题并且由于钩子直到现在无法解决,我显然想知道:)
【问题讨论】:
-
是的,钩子是最好的选择。但是你可以做一个函数引用而不是定义函数。类似
onClick={this.handleClick}
标签: javascript reactjs callback arrow-functions react-props