javascript - useCallback 与简单函数

标签 javascript reactjs

什么时候应该使用 useCallback 什么时候应该使用简单的数组函数? 或者也许我不应该使用第二种方法?

const MyCompenent = (props) => {
  const handleClick = useCallback(()=>{
    //do stuff
  })
  return(
    <SomeCompnent onClick={handleClick} />
  )
}
// or
const MyCompenent = (props) => {
  return(
    <SomeCompnent onClick={()=> {/*do stuff*/}} />
  )
}

最佳答案

根据 docs ,

Pass an inline callback and an array of dependencies. useCallback will return a memoized version of the callback that only changes if one of the dependencies has changed. This is useful when passing callbacks to optimized child components that rely on reference equality to prevent unnecessary renders (e.g. shouldComponentUpdate).

这意味着,给定一个纯函数和依赖项,对于给定的一组参数/依赖项,输出将保持不变。所以它所做的是保存给定集合的输出,如果进行了这样的调用,而不是调用实际函数,直接返回先前计算的值。


在您的示例中,您没有传递任何依赖项。所以它非常类似于一个简单的函数,但有一个额外的包装层。

您可以为处理程序使用命名函数或内联函数。使用哪个属于个人意见,但我更喜欢使用命名函数,因为它可以保持 JSX 清洁并提供可重用性的可能性。

引用资料:

关于javascript - useCallback 与简单函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58130067/

相关文章:

javascript - 在reactjs componentWillMount()中,如何获取哪个组件?

node.js - React 中模型更改 11 次后 Froala 编辑器崩溃

javascript - 如何从数组中删除 endDate 属性高于当前所选月份的员工?

javascript - 返回$.get的结果什么也不返回

javascript - 从javascript对象中的事件处理程序访问变量

javascript - $注入(inject)器:modulerr Module Error after publishing application on IIS

javascript - 如何使用 create-react-app 创建新项目

javascript - 如何清除文本区域输入中的文本?

javascript - HTML anchor 标记下载属性在 Firefox 中不适用于 jpg 和 png 文件

reactjs - 使用数据填充 React 表单(如果存在)