reactjs - React 事件处理程序性能问题
问题描述
关于使用箭头函数与绑定到this
事件处理程序的类方法,React 的官方文档中写道:
这种语法(箭头函数)的问题是每次
LoggingButton
(示例组件)呈现时都会创建不同的回调。在大多数情况下,这很好。但是,如果此回调作为道具传递给较低的组件,则这些组件可能会进行额外的重新渲染。我们通常建议在构造函数中绑定或使用类字段语法,以避免此类性能问题。
既然新方法推荐使用函数组件而不是类,那么我们如何解决上述性能问题呢?
解决方案
使用useCallback来记忆函数。useCallback 的第二个参数允许您指定哪些变量应该导致重新创建函数。如果其中一个发生变化,将创建一个新的回调,否则将重用相同的函数引用。如果你不想创建一个新函数,一个空数组作为第二个参数就可以了。
import React, { useCallback } from 'react';
const ExampleComponent = (props) => {
const onClick = useCallback(() => {
console.log('got clicked', props.name);
}, [props.name]);
return (
<SomeOtherComponent onClick={onClick} />
)
}
推荐阅读
- javascript - THREE.js - 仅在另一个对象前面时渲染一个对象
- java - 哪种检查字符是否为字母的有效方法?
- rest - 如何让微服务有效沟通的指导
- javascript - 在 useEffect 挂钩中调用 API 在道具更新时无法正常工作
- java - 从servlet创建和下载excel文件
- java - 如何在 Spring MVC 中使用表单数据构造模型对象?
- swift - 如何在swift中覆盖通用谓词的运算符和(&&)?
- python - 将 while 循环用户输入计算添加到列表中。Python3
- docker - Kubernetes 用于多用户应用程序,每个项目都有特定的隔离资源
- html - CSS图像和文本同时悬停