React Hooks 的一些 API 方法 使用

 useState

import React, { useState } from 'react';

const demo = () => {
    const [count, setCount] = useState(0);
    // 加
    const add = ()=>{
        let num = count
        setCount(num + 1)
    }
    //减    
    const delete = ()=>{
        let num = count
        setCount(num - 1)
    }
    return (<div className='FullCakendarDom'>
        <div> {count} </div>
        <button onClick={add}> 加 </button>
        <button onClick={delete}> 减</button>
    </div>)
}
export default demo 

 useEffect


import React, { useState, useEffect } from 'react';

const demo = (props) => {
    const { flag = false} = props
    const [count, setCount] = useState(0);

    useEffect(()=>{
        setCount( flag ? 1 : 0)
    },[flag]) // 监听 flag 的变化 并执行 useEffect 参数1 箭头函数里的方法

    return (<div className='FullCakendarDom'>
        <div> {count} </div>
    </div>)
}
export default demo 

 useMemo


import React, { useState, useEffect, useMemo } from 'react';

const demo = () => {
    const [count, setCount] = useState(0);
    // 加
    const add = ()=>{
        let num = count
        setCount(num + 1)
    }
    //减    
    const delete = ()=>{
        let num = count
        setCount(num - 1)
    }

    // 类似于计算属性 对值的缓存 所依赖的变量改变时才会执行
    const memoNum = useMemo(()=>{
        let str = '当前小于:10 ' 
        if(count >= 10) str = '当前大于 || 等于:10 ';
        return str
    },[count])

    return (<div className='FullCakendarDom'>
        <div> {count} </div>
        <div> {memoNum } </div>
        <button onClick={add}> 加 </button>
        <button onClick={delete}> 减</button>
    </div>)
}
export default demo 

 useCallback


import React, { useState, useEffect, useMemo, useCallback } from 'react';

const demo = () => {
    const [count, setCount] = useState(0);
    const [count2, setCount2] = useState(0);
    // 加
    const add = ()=>{
        let num = count
        setCount(num + 1)
    }
    //减    
    const delete = ()=>{
        let num = count
        setCount(num - 1)
    }
    // 无依赖值的情况
    const setTimeCount1 = useCallback(() => {
          setTimeout(() => {
            setCount(10);
          }, 2000);
    }, []);
    useEffect(()=>{
        setTimeCount1()
    },[])
    // 有依赖值的情况
    const setTimeCount2 = useCallback(() => {
          setTimeout(() => {
            setCount2(count);
          }, 2000);
    }, [count]);
    useEffect(()=>{
        setTimeCount2()
    },[count])

    return (<div className='FullCakendarDom'>
        <div> {count} </div>
        <div> {memoNum } </div>
        <div> {count2} </div>
        <button onClick={add}> 加 </button>
        <button onClick={delete}> 减</button>
    </div>)
}
export default demo 

 useContext


import React, { useState, useEffect, useMemo, useCallback , useContext } from 'react';

 useRef


import React, { useState, useEffect, useMemo, useCallback , useContext, useRef } from 'react';

  useImperativeHandle


import React, { useState, useEffect, useMemo, useCallback , useContext, useRef, useImperativeHandle } from 'react';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值