IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> react函数式组件(hooks)之useEffect -> 正文阅读

[JavaScript知识库]react函数式组件(hooks)之useEffect


前言

React函数式编程没有生命周期,因此需要借助useEffect来实现。


一、useEffect的作用?

  • 发ajax请求获取数据
  • 设置订阅/获取定时器
  • 手动更改真实DOM

二、useEffect的使用?

1.class组件

在class组件中可以使用生命周期函数,知道组件触发的过程。
代码如下(示例):

import React, { Component } from 'react'

export default class App extends Component {
    constructor(p){
        super(p)
        this.state = {num: 0}
    }
    render() {
        return (
            <div>
                <h2>{this.state.num}</h2>
                <button onClick={this.addNum.bind(this)}>累加</button>
            </div>
        )
    }
    componentDidMount(){
        console.log('Mount')
    }
    componentDidUpdate(){
        console.log('Update')
    }
    componentWillUnmount(){
    	consoloe.log('Unmount')
    }
    addNum(){
        this.setState({
            num: this.state.num+1
        })
    }
}

生命周期(图)
在这里插入图片描述

2.函数式组件

函数式组件中没有自己的生命周期,需要使用useEffect模拟生命周期。
代码如下(示例):

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

function App1(){
    const [num, setNum] = useState(0);
    const [num1, setNum1] = useState(1)
    /*
    1.第二个参数为空的情况:在初次渲染执行一次后,会监听所有数据的更新,数据更新则会触发useEffect()。(componentDidMount、componentDidUpdate)
    2.第二个参数为[]的情况:回调函数只会在第一次render()后执行。(componentDidMount)
    3.第二个参数为[监听的元素]:在初次渲染执行一次后,只会监听相应元素变化才会触发回调函数。(componentDidMount、componentDidUpdate)
    4.useEffect体中使用了return为一个函数,会在组件卸载前执(componentWillUnmount)
    */
    useEffect(()=>{
        console.log('useEffect')
    }, [num])
    return (
    <div>
      <h1>{num}</h1>
      <button onClick={()=>setNum(num+1)}>累加</button>
      <h1>{num1}</h1>
      <button onClick={()=>setNum1(num1+1)}>累加</button>
    </div>
    )
}

export default App1;

总结

  1. 语法和说明
useEffect(()=>{
	// 在此可以执行任何带副作用操作
	return ()=> { // 在组件卸载前执行
		// 在此走一些收尾工作,如清除定时器/取消订阅等
	}
},[stateValue])// 如果指定的是[],回调函数只会在第一次render()后执行
//如果第二个参数不填,将会监听所有数据的更新
  1. 可以把useEffect Hook 看做如下三个函数的组合
  • componentDidMount()
  • componentDidUpdate()
  • componentWillUnmount()
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 11:46:33  更:2022-10-31 11:47:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 18:28:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码