美文网首页React使用技巧
useMemo、useCallback使用

useMemo、useCallback使用

作者: 冷洪林 | 来源:发表于2021-12-06 16:49 被阅读0次

在class的时代,我们一般是通过pureComponent来对数据进行一次浅比较,引入Hook特性后,我们可以使用Memo进行性能提升。
一下示例将解释useMemo的作用:

import React, { ReactElement, useCallback, useState } from "react";

const Example = () => {
  const [n, setN] = useState<number>(0);
  const [m, setM] = useState<number>(10);
  console.log("执行最外层盒子了");

  const addN = useCallback(() => {
    setN(n + 1);
  }, [n]);

  const addM = useCallback(() => {
    setM(m + 1);
  }, [m]);
  return (
    <div style={{ textAlign: "center", marginTop: 50 }}>
      最外层盒子
      <Child1 value={n} onClick={addN} />
      <Child2 value={m} onClick={addM} />
      <button onClick={addN}>n+1</button>
      <button onClick={addM}>m+1</button>
    </div>
  );
};

interface childProp {
  value: number;
  onClick?: () => void;
}

const Child1 = React.memo((props: childProp): ReactElement<childProp> => {
  console.log("执行子组件1了");
  return <div>子组件1上的n:{props.value}</div>;
});

const Child2 = React.memo((props: childProp): ReactElement<childProp> => {
  console.log("执行子组件2了");
  return <div>子组件2上的m:{props.value}</div>;
});

export default Example;

示例图
执行结果

总结:

  • 使用memo可以帮助我们优化性能,让react不执行没必要的函数
  • 由于复杂数据类型的地址可能发生改变,于是传递给子组件的props也会发生变化,这样还是会执行不必要的函数,所以就用到了useMemo这个api
  • useCallbackuseMemo的语法糖

相关文章

  • useMemo和useCallback

    参考文章:链接 useMemo useCallback

  • useMemo、useCallback使用

    在class的时代,我们一般是通过pureComponent来对数据进行一次浅比较,引入Hook特性后,我们可以使...

  • React 性能优化方向

    1.使用 React.memo 缓存 组件 2.使用 useMemo 缓存值 3.使用 useCallback 缓存函数

  • react useCallback

    useCallback(fn, deps)相当于 useMemo(() => fn, deps)

  • useCallback,useMemo

    useCallback 问题引发 子组件onChange调用了父组件的handleOnChange父组件handl...

  • useCallback - React源码解析(五)

    本文将讲解useCallback的源码实现。useCallback是也一个非常简单的钩子,其实现比useMemo还...

  • useMemo和useCallback的使用

    useMemo 把“创建”函数和依赖项数组作为参数传入 useMemo,它仅会在某个依赖项改变时才重新计算 mem...

  • useMemo和useCallback的使用

    useMemo 把“创建”函数和依赖项数组作为参数传入 useMemo,它仅会在某个依赖项改变时才重新计算 mem...

  • Memo Hook

    Memo Hook 用于保持一些比较稳定的数据,通常用于性能优化 useMemo和useCallback使用场景类...

  • Hooks进阶

    React.memo、useMemo、useCallback 的区别 React.memo 是对传入的 props...

网友评论

    本文标题:useMemo、useCallback使用

    本文链接:https://www.haomeiwen.com/subject/xvfnxrtx.html