React中Hooks的使用

// Hooks
// 是一套Api,让无状态组件(函数式组件)拥有类组件相似的特征
// 1、拥有state状态
// 2、拥有生命周期
// 3、拥有ref/context等特性

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

// useState
// 语法:const [msg, setMsg] = useState(‘hello 2005’)

 // 定义了一个count的声明式变量
    let [count, setCount] = useState(1000)
    let [bol, setBol] = useState(false)
    let [list, setList] = useState([])

// useEffect
// 作用:为当前的函数式组件提供类似生命周期的特性
// 类似 componentDidMount()
// 类似 componentDidUpdate()
// 类似 componentWillUnmount()
// 语法:useEffect(fn,[])
// 在同一个函数式组件中,可同时使用多个useEffect。自已开启的定时器自己清除。

    // useEffect()完整语法
    useEffect(()=>{
        // 类似 componentDidMount() 的功能
        // 开启定时器、调接口、开启长连接
        timer = setInterval(()=>{
            console.log(1)
        }, 1000)
        return ()=>{
            // 类似 componentWillUnmount()
            // 关闭定时器、关闭长连接
            clearInterval(timer)
        }
    }, [count])
    // [count],类似 componentDidUpdate() 的作用

全部代码

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

// Hooks+无状态组件
// 全部都是类组件
// Hooks+无状态组件+类组件

// Hooks
// 是一套Api,让无状态组件(函数式组件)拥有类组件相似的特征
// 1、拥有state状态
// 2、拥有生命周期
// 3、拥有ref/context等特性

// useState
// 语法:const [msg, setMsg] = useState('hello 2005')


// useEffect
// 作用:为当前的函数式组件提供类似生命周期的特性
// 类似 componentDidMount()
// 类似 componentDidUpdate()
// 类似 componentWillUnmount()
// 语法:useEffect(fn,[])
// 在同一个函数式组件中,可同时使用多个useEffect。自已开启的定时器自己清除。

export default function TestHooks(props) {

    // 定义了一个count的声明式变量
    let [count, setCount] = useState(1000)
    let [bol, setBol] = useState(false)
    let [list, setList] = useState([])
    let timer = null

    function changeCount() {
        setCount(count+1)
    }

    // useEffect()完整语法
    useEffect(()=>{
        // 类似 componentDidMount() 的功能
        // 开启定时器、调接口、开启长连接
        timer = setInterval(()=>{
            console.log(1)
        }, 1000)
        return ()=>{
            // 类似 componentWillUnmount()
            // 关闭定时器、关闭长连接
            clearInterval(timer)
        }
    }, [count])
    // [count],类似 componentDidUpdate() 的作用

    useEffect(()=>{
        document.title = '2005'
        // return undefined
    })

    return (
        <div>
            <h1>测试hooks</h1>
            <h3>{count}</h3>
            <button onClick={changeCount}>增加</button>
            <hr />
        </div>
    )
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值