Skip to content
Discussion options

You must be logged in to vote

useMemo、useEffect 和 useCallback 是三个常用的Hooks:

useMemo

useMemo 用于对复杂运算的结果进行缓存。当有成本较高的计算且依赖特定变量时,可以使用useMemo来避免在每次渲染时都重新计算。此Hook接收一个函数和一个依赖项数组,只有当依赖项改变时,才会重新计算memoizedValue。例如:

const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);

useEffect

useEffect 用于处理副作用,也就是说和UI不相关的内容,例如获取数据,修改DOM元素等。它接受一个函数和一个依赖项。若依赖项为空数组([]),副作用仅执行一次(例如用于页面初次刷新);若依赖项为其他变量,则仅当依赖项变化时执行。例如:

useEffect(() => {
  const subscription = props.source.subscribe();
  return () => {
    subscription.unsubscribe();
  };
}, [props.source]);

useCallback

useCallback 用于缓存函数本身。此Hook接收一个内联函数和一个依赖项数组,仅当依赖项改变时,才会返回新的函数实例(高阶函数的概念,返回函数)。例如:

const memoizedCallback = useCallback(
  () => {
    doSomething(a, b);
  },
  [a, b],

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@jrenc2002
Comment options

Answer selected by zhengqiuwan
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants