Ole*_*s G 3 reactjs usecallback
在 React 中,我们可以使用 useCallback 来记忆函数,这样函数就不会在每次重新渲染时都发生改变
const fn = useCallback(someOtherFn, []);
Run Code Online (Sandbox Code Playgroud)
相反,我们可以someOtherFn在组件外部定义吗?如果它使用 setState,我们可以将其作为参数提供给它吗?
就像是
function someOtherFn(setState) {
setState("ok")
}
function myComponenet(){
......
}
Run Code Online (Sandbox Code Playgroud)
如果这是一个愚蠢的问题,请提前抱歉。
您可以这样做,但它可能会达不到目的,因为您必须编写另一个调用它的函数,并且每次渲染都会创建另一个函数。例如,也许您正在考虑:
function someOtherFn(setState) {
setState("ok")
}
const MyComponent = () => {
const [state, setState] = useState();
return <button onClick={() => someOtherFn(setState)}>click</button>;
};
Run Code Online (Sandbox Code Playgroud)
虽然someOtherFn确实不需要每次都创建 - 它只需要创建一次 -处理函数,
() => someOtherFn(setState)
Run Code Online (Sandbox Code Playgroud)
每次组件渲染时都会创建,这在某些不常见的(IMO)情况下可能会出现问题。
为了避免这个问题,您必须以setState某种方式将参数持久地绑定到函数 - 这可以通过使用最轻松地完成useCallback。
| 归档时间: |
|
| 查看次数: |
861 次 |
| 最近记录: |