-
【React小白】useMemo和useEffect和useCallback 有什么不同吗? |
Beta Was this translation helpful? Give feedback.
Answered by
0xorz
Jun 6, 2024
Replies: 1 comment 1 reply
-
useMemo、useEffect 和 useCallback 是三个常用的Hooks: useMemouseMemo 用于对复杂运算的结果进行缓存。当有成本较高的计算且依赖特定变量时,可以使用useMemo来避免在每次渲染时都重新计算。此Hook接收一个函数和一个依赖项数组,只有当依赖项改变时,才会重新计算memoizedValue。例如: const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]); useEffectuseEffect 用于处理副作用,也就是说和UI不相关的内容,例如获取数据,修改DOM元素等。它接受一个函数和一个依赖项。若依赖项为空数组([]),副作用仅执行一次(例如用于页面初次刷新);若依赖项为其他变量,则仅当依赖项变化时执行。例如: useEffect(() => {
const subscription = props.source.subscribe();
return () => {
subscription.unsubscribe();
};
}, [props.source]); useCallbackuseCallback 用于缓存函数本身。此Hook接收一个内联函数和一个依赖项数组,仅当依赖项改变时,才会返回新的函数实例(高阶函数的概念,返回函数)。例如: const memoizedCallback = useCallback(
() => {
doSomething(a, b);
},
[a, b],
); 常用Hook
常见坑
|
Beta Was this translation helpful? Give feedback.
1 reply
Answer selected by
zhengqiuwan
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
useMemo、useEffect 和 useCallback 是三个常用的Hooks:
useMemo
useMemo 用于对复杂运算的结果进行缓存。当有成本较高的计算且依赖特定变量时,可以使用useMemo来避免在每次渲染时都重新计算。此Hook接收一个函数和一个依赖项数组,只有当依赖项改变时,才会重新计算memoizedValue。例如:
useEffect
useEffect 用于处理副作用,也就是说和UI不相关的内容,例如获取数据,修改DOM元素等。它接受一个函数和一个依赖项。若依赖项为空数组([]),副作用仅执行一次(例如用于页面初次刷新);若依赖项为其他变量,则仅当依赖项变化时执行。例如:
useCallback
useCallback 用于缓存函数本身。此Hook接收一个内联函数和一个依赖项数组,仅当依赖项改变时,才会返回新的函数实例(高阶函数的概念,返回函数)。例如: