小编Ant*_*Min的帖子

关于useCallback钩子和匿名函数的问题

当传递回调函数时,尤其是传递参数化函数时,我知道应该使用钩子,useCallback因为使用匿名函数会对性能产生不利影响。

我说的匿名函数的例子就是这样的。

import React, { useState } from 'react';

const Component = () => {
  const [param, setParam] = useState('');
  ...

  return (
    ...
    <SomeComponent
      onClick={() => setParam('parameter')}
      {...others}
    />
  );
}
Run Code Online (Sandbox Code Playgroud)

在转换匿名函数以使用此钩子的过程中,我遇到了一个错误,提示“渲染次数过多”或者它无法正常工作。但具体是在什么情况下、什么情况下我也不清楚。

我用useCallback如下。

import React, { useState, useCallback } from 'react';

const Component = () => {
  const [param, setParam] = useState('');

  const handleClick = useCallback((params) => {
    setParam(params);
  },[]);

  ...
  return (
    ...
    <SomeComponent
      onClick={handleClick('parameter')}
      {...others}
    />
  );
}
Run Code Online (Sandbox Code Playgroud)

但是,当使用匿名函数在 内返回时useCallback …

javascript anonymous-function reactjs react-hooks usecallback

2
推荐指数
1
解决办法
5725
查看次数