好的,所以我是 React 的新手,关于事件处理程序的一件事真的非常困扰我:我似乎无法直接回答如何将参数传递给它们。到目前为止,我看到了两种方式:
绑定props.squareClick.bind(this, argument)
排队
onClick={() => props.squareClick(argument)}
我一直在读的最重要的事情是性能成本。由于内联函数或具有 Bind 的函数在重新渲染时被视为全新的函数,因此存在额外的 GC 开销,并且对于类组件,它可以使用 PureComponent 中断对 shouldComponentRender 的浅层检查。
然后有人说这是过度优化,我不应该担心,只需使用内联函数即可。这很酷,但老实说,所有这些相互矛盾的信息都让我感到困惑。
所以,我将包括一个代码示例。它来自我为练习 React 而制作的 Tic-Tac-Toe 应用程序。它是板上单个 Square 的功能组件。这个组件被重新用于所有的方块,一个键作为props(即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;