useMemo

作者: Small_Song | 来源:发表于2021-02-25 11:21 被阅读0次

下面我们通过一个实例,来理解下 useMemo的用法。

  • 父组件
function App() {
  const [name, setName] = useState('名称')
  const [content,setContent] = useState('内容')
  return (
      <>
        <button onClick={() => setName(new Date().getTime())}>name</button>
        <button onClick={() => setContent(new Date().getTime())}>content</button>
        <Button name={name}>{content}</Button>
      </>
  )
}
  • 子组件
function Button({ name, children }) {
  function changeName(name) {
    console.log('11')
    return name + '改变name的方法'
  }

  const otherName =  changeName(name)
  return (
      <>
        <div>{otherName}</div>
        <div>{children}</div>
      </>

  )
}

熟悉react的同学可以很显然的看出,当我们点击父组件的按钮的时候,子组件的name和children都会发生变化。

注意我们打印console.log的方法。
不管我们是改变name或者content的值,我们发现 changeName的方法都会被调用。
是不是意味着 我们本来只想修改content的值,但是由于name并没有发生变化,所以无需执行对应的changeName方法。但是发现他却执行了。 这是不是就意味着性能的损耗,做了无用功。

下面我们使用useMemo进行优化

  • 优化之后的子组件
function Button({ name, children }) {
  function changeName(name) {
    console.log('11')
    return name + '改变name的方法'
  }

const otherName =  useMemo(()=>changeName(name),[name])
  return (
      <>
        <div>{otherName}</div>
        <div>{children}</div>
      </>

  )
}

export default Button

这个时候我们点击 改变content值的按钮,发现changeName 并没有被调用。
但是点击改变name值按钮的时候,changeName被调用了。
所以我们可以使用useMemo方法 避免无用方法的调用,当然一般我们changName里面可能会使用useState来改变state的值,那是不是就避免了组件的二次渲染。
达到了优化性能的目的

相关文章

  • useMemo

    1. useMemo的使用 useMemo和useEffect 的使用基本上一样 useMemo的好处 对子组件进...

  • useMemo 和 useCallback —— React H

    useMemo 一、作用 useMemo 和 memo 作用相同,都是用来做性能优化的,不会影响业务逻辑。 mem...

  • useMemo和useCallback

    参考文章:链接 useMemo useCallback

  • useMemo和useCallback的使用

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

  • useMemo和useCallback的使用

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

  • useMemo

    来源 memo,PureComponent,shouldComponentUpdate 1 .以下例子 react...

  • useMemo

  • useMemo

    React 有一个特点,那就是当父组件重新 render 的时候,无论传入子组件的 props 有没有变化,子组件...

  • useMemo

    用法 将函数组件进行性能优化,作为纯组件 监听某一个状态的变化,决定是否要触发相应的函数,类似useEffect,...

  • useMemo

    下面我们通过一个实例,来理解下 useMemo的用法。 父组件 子组件 熟悉react的同学可以很显然的看出,当我...

网友评论

      本文标题:useMemo

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