React:useCallback

useCallback跟useMemo比较类似,但它返回的是缓存的函数。
函数式组件中,使用useCallback对函数进行缓存(被外层函数包裹,相当于闭包),组件再次更新时(函数重新执行)会根据依赖是否变化决定选用缓存函数还是新函数

父组件

import { useState, useCallback, Fragment } from 'react';
import Child from './Child'
const index = () =>
{
    const [count, setCount] = useState(1);
    const [content, setContent] = useState('Lee');
    // 修改input的 `content`值
    const intChang = (event) =>
    {
        const { target } = event
        setContent(target.value)
    }
    const callback = useCallback(() =>
    {
        console.log(count, content, 'callback');
        return count;
    }, []);

    return (
        <Fragment>
            <h4>父组件的值:{count}</h4>
            <Child callback={callback} />
            <div>
                <button onClick={() => setCount(count + 1)}>+</button>
                <input value={content} onChange={intChang} />
            </div>
        </Fragment>
    );
};
export default index

子组件

import { useState, useEffect } from 'react';
const index = ({ callback }) =>
{
    // console.log(callback, 'callback2222222222');
    // const [count, setCount] = useState(_ => callback());
    // useEffect(() =>
    // {
    //     setCount(callback());
    // }, [callback]);
    // console.log(321, '子组件');
    const count = callback()
    return (
        <div>
            {count}
        </div>
    );
};
export default index

无依赖的情况

在这里插入图片描述
在这里插入图片描述

依赖count值时

在这里插入图片描述

在这里插入图片描述

依赖 content 时

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

臧小川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值