React函数式组件Hook中的useEffect函数的详细解析

 更新时间:2022年10月27日 14:11:53   作者:小马_xiaoen  
useEffect是react v16.8新引入的特性。我们可以把useEffect hook看作是componentDidMount、componentDidUpdate、componentWillUnmounrt三个函数的组合

前言

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;

总结

语法和说明

useEffect(()=>{
	// 在此可以执行任何带副作用操作
	return ()=> { // 在组件卸载前执行
		// 在此走一些收尾工作,如清除定时器/取消订阅等
	}
},[stateValue])// 如果指定的是[],回调函数只会在第一次render()后执行
//如果第二个参数不填,将会监听所有数据的更新

可以把useEffect Hook 看做如下三个函数的组合

  • componentDidMount()
  • componentDidUpdate()
  • componentWillUnmount()

到此这篇关于React函数式组件Hook中的useEffect函数的详细解析的文章就介绍到这了,更多相关React useEffect内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • React封装自定义Hook捕获所有错误的实现方法

    React封装自定义Hook捕获所有错误的实现方法

    在 React 开发中,错误处理是确保应用稳定性和用户体验的重要部分,React 提供了多种错误捕获方式,包括错误边界**等,本文将详细介绍这些方法,并展示如何封装一个能够捕获所有同步和异步错误的自定义 Hook,需要的朋友可以参考下
    2024-12-12
  • 使用webpack配置react-hot-loader热加载局部更新

    使用webpack配置react-hot-loader热加载局部更新

    这篇文章主要介绍了使用webpack配置react-hot-loader热加载局部更新,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • React错误的习惯用法分析详解

    React错误的习惯用法分析详解

    这篇文章主要为大家介绍了React错误用法习惯分析详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 完美解决react-codemirror2 编辑器需点击一下或者延时才显示数据的问题

    完美解决react-codemirror2 编辑器需点击一下或者延时才显示数据的问题

    这篇文章主要介绍了react-codemirror2编辑器需点击一下或者延时才显示数据的问题,解决方法也很简单,需要手动引入自动刷新的插件,配置一下参数就可以了,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • 详解如何使用React Hooks请求数据并渲染

    详解如何使用React Hooks请求数据并渲染

    这篇文章主要介绍了如何使用React Hooks请求数据并渲染,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • React 中常用的几种路由跳转方式小结

    React 中常用的几种路由跳转方式小结

    基本路由跳转是最常见的一种方式,下面介绍React 中常用的几种路由跳转方式,感兴趣的朋友一起看看吧
    2023-12-12
  • ReactNative页面跳转实例代码

    ReactNative页面跳转实例代码

    这篇文章主要介绍了ReactNative页面跳转的代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • 详解React的回调渲染模式

    详解React的回调渲染模式

    这篇文章主要介绍了详解React的回调渲染模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • React组件传参方式你了解吗

    React组件传参方式你了解吗

    众所周知 ,在业务开发中,无论用的什么框架,首先要熟悉项目搭建,路由配置和组件通信,所以我们今天要探究的就是React中组件通信的几种方式,快跟随小编一起学习起来吧
    2024-03-03
  • React Native项目中使用Lottie动画的方法

    React Native项目中使用Lottie动画的方法

    这篇文章主要介绍了React Native 实现Lottie动画的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10

最新评论