美文网首页
useCallback

useCallback

作者: 一土二月鸟 | 来源:发表于2020-08-14 11:51 被阅读0次
  • 常见应用场景:
    • 当父组件传值或传递函数给子组件时,适合通过useMemo或useCallback将子组件的props进行缓存,减少子组件不必要的渲染。
  • 通过监听state的状态,返回一个最新的回调函数。
  • 如果依赖的值没有发生变化,callback为之前缓存的函数,函数所形成的闭包和最新render的值为两个不同的作用域。具体参见示例2:
// 示例1
import React from 'react';
import ReactDOM from 'react-dom';
import { useState } from 'react';
import { useCallback } from 'react';

const App = () => {

  const [age, setAge] = useState(0);
  const [said, setSaid] = useState('我可以玩');

  const cb = useCallback(() => {
    console.log(age, said);
    if (age > 3) {
      setSaid("我得上学了");
    }
  }, [age, said]);

  const clickPassYear = () => {
    setAge(age + 1);
    cb();
  }

  return (
    <>
      小爷今年{age}岁了,{said}
      <br />
      <button onClick={clickPassYear}>过去一年</button>
    </>
  );
}

ReactDOM.render(<App />, document.getElementById('root'));
  • 示例2
import React, { useCallback, useState, useEffect } from 'react';
import ReactDom from 'react-dom';

function Index () {

  const [count, setCount] = useState(0);


  const cb = useCallback(() => {
    setCount(count => count + 1); // 2. 此函数形成的闭包所持有的count永远是0,因为setCount后,函数会重新执行生成新的count,和闭包中的count是两个不同的值。
  }, []); // 1.此处为空数组,则cb只会被生成一次

  return <>
    <p>{count}</p> 
    <button onClick={cb}>click cb</button>
  </>

}

ReactDom.render(<Index />, document.getElementById('root'));

相关文章

  • 【web前端】useCallback 和 useMemo 的用法

    useCallback 使用useCallback可以避免组件重复渲染,提升性能,以下是一个使用useCallba...

  • useMemo和useCallback

    参考文章:链接 useMemo useCallback

  • useCallback - React源码解析(五)

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

  • useCallback

    1. 问题引发 子组件onChange调用了父组件的handleOnChange 父组件handleOnChang...

  • useCallback

    简介 1 .优化子组件的渲染次数2 .父组件重新渲染组件的时候,传给子组件的函数类型的props也会重新生成,所以...

  • useCallback

    常见应用场景:当父组件传值或传递函数给子组件时,适合通过useMemo或useCallback将子组件的props...

  • useCallback

    一、前言 对于新手来说,没写过几次死循环的代码都不好意思说自己用过 React Hooks。本文将以useCall...

  • useCallback

    useCallback同前面讲的useMemo、useLayoutEffect一样可以用来提高性能。先来看看官网如...

  • react不同钩子useCallback与 useMeno

    useCallback性能优化的点: 1.当需要将一个函数传递给子组件时, 最好使用useCallback进行优化...

  • react的useMemo

    react的useMemouseMemo与useCallback使用指南

网友评论

      本文标题:useCallback

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