React – 以正确的方式访问处理程序中的自定义参数

TL; DR – 您可以在处理程序中访问渲染时间值,而无需使用匿名箭头功能。提示 – 利用数据属性。

React在很多方面都很出色,它让我们可以通过不那么自以为是(或没有见解)的方式以不同的方式做事。

最近几天,特别是在钩子发布之后,社区一直在讨论引用平等以及渲染中的匿名箭头功能如何对性能不利。

我们不会深入研究为什么或如何在渲染过程中使用箭头函数影响性能(或者不这样做)。以下是针对上下文的两条截然不同的推文。

为什么

我们主要在渲染期间使用箭头函数将自定义参数传递给事件处理程序。

例如,这是一个常见的用例 –

常量 MyComp = () => {   常量 handleClick = Ë ID => {     //处理单击并使用id更新状态   }    // id来自州   返回      <DIV 的onClick ={Ë => handleClickË ID}>你好,世界DIV>    } 

怎么样

我们可以利用数据属性和访问事件对象中的值,而不是使用匿名箭头函数。

常量 MyComp = () => {   常量 handleClick = Ë => {     常量 ID = Ë目标数据集ID     //处理单击并使用id更新状态   }    // id来自州   返回      <DIV 数据-ID ={ID} 的onClick ={handleClick}>你好,世界DIV>    } 

好处

这种方法有很多优点 –

  1. 如果需要,您可以非常轻松地记忆回调。
常量 MyComp = () => {   // id来自州   常量 handleClick = 应对useCallback((Ë => {     常量 ID = Ë目标数据集ID     //处理单击并使用id更新状态   }, ID))    返回      <DIV 数据-ID ={ID} 的onClick ={handleClick}>你好,世界DIV>    } 
  1. 在组件渲染期间不创建新函数,这样可以在vdom diffing期间节省额外的计算成本。

  2. 如果使用React.memo的子组件将此处理程序作为参数,则不必编写自定义的areEqual方法来绕过与箭头函数相关的参照完整性问题。

请记住,即使传入其他基本类型,所有数据属性都会返回String值。因此,从数据中心化提取时强制实现您的价值是一种很好的做法。

常量 ID = Ë目标数据集ID //这将是String  常量 ID = Ë目标数据集ID //如果需要,转换为类型 

我已经创建了一个代码框来演示它是如何工作的 – 自定义参数处理程序

你真了不起祝你有美好的一天 ⚡️


资讯来源:由0x资讯编译自DEV,原文:https://dev.to/flexdinesh/react-access-custom-params-in-handlers-the-right-way-44mi ,版权归作者所有,未经许可,不得转载
你可能还喜欢