【发布时间】:2018-12-05 03:29:11
【问题描述】:
好的,所以我是 React 的新手,关于事件处理程序的一件事真的非常困扰我:我似乎无法得到关于如何将参数传递给它们的直接答案。到目前为止,我见过两种方式:
绑定props.squareClick.bind(this, argument)
排队
onClick={() => props.squareClick(argument)}
我一直在阅读的重要内容是性能成本。因为内联函数或带有 Bind 的函数在重新渲染时会被视为全新的函数,所以会产生额外的 GC 开销,而且对于类组件,它可能会中断对带有 PureComponent 的 shouldComponentRender 的浅层检查。
然后有人说这是过度优化,我不应该担心它,只需使用内联函数即可。这很酷,但老实说,所有这些相互矛盾的信息都让我感到困惑。
所以,我将包含一个代码示例。它取自我为练习 React 而制作的井字游戏应用程序。它是板上单个 Square 的功能组件。这个组件被所有的方格重复使用,并且一个键作为prop(即TOP_LEFT)传入以指示它是哪个方格。还有一个单击处理程序,当单击 Square 时,会将一个事件发送回父组件。为了让点击处理程序知道点击了哪个 Square,该键属性作为参数传入。
请查看此代码并给我反馈。这是 React 中可接受的做法吗?它会不会对性能造成影响,并且这种性能影响会很大吗?最后,如果你的回答是我不应该这样做,请清楚地向我解释一个更好的做法。
import React from 'react';
const Square = props => {
return (
<div onClick={() => props.squareClick(props.key)}>
<p>{props.value}</p>
</div>
);
};
export default Square;
【问题讨论】:
-
如果你有很多这样的方形组件并且经常更新,那么你需要担心性能影响,否则你可以使用内联箭头功能。但是,最好将其作为一种避免使用内联箭头函数的做法,因为随着应用程序的增长,解决此类性能问题将变得困难。检查一下如何避免这种情况stackoverflow.com/questions/45053622/…
标签: javascript reactjs