当传递回调函数时,尤其是传递参数化函数时,我知道应该使用钩子,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