您现在的位置是:网站首页> 编程资料编程资料
React函数式组件Hook中的useEffect函数的详细解析_React_
                     2023-05-24
                443人已围观
                
                2023-05-24
                443人已围观
            
简介 React函数式组件Hook中的useEffect函数的详细解析_React_
前言
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 ( {this.state.num}
 ) } 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 ( {num}
{num1}
 ) } export default App1;总结
语法和说明
useEffect(()=>{ // 在此可以执行任何带副作用操作 return ()=> { // 在组件卸载前执行 // 在此走一些收尾工作,如清除定时器/取消订阅等 } },[stateValue])// 如果指定的是[],回调函数只会在第一次render()后执行 //如果第二个参数不填,将会监听所有数据的更新可以把useEffect Hook 看做如下三个函数的组合
- componentDidMount()
- componentDidUpdate()
- componentWillUnmount()
到此这篇关于React函数式组件Hook中的useEffect函数的详细解析的文章就介绍到这了,更多相关React useEffect内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
                
                
相关内容
- React函数式组件Hook中的useState函数的详细解析_React_
- Vue中一个组件调用其他组件的方法详解(非父子组件)_vue.js_
- 代替Vue Cli的全新脚手架工具create vue示例解析_vue.js_
- 使用Vue写一个todoList事件备忘录经典小案例_vue.js_
- hansontable在vue中的基本使用教程_vue.js_
- vue3使用element ui的方法实例_vue.js_
- React Hook中的useState函数的详细解析_React_
- JavaScript实现echarts水球图百分比展示大屏可视化_javascript技巧_
- 基于Vue3文件拖拽上传功能实现_vue.js_
- Vue中的v-for列表循环示例详解_vue.js_
 
                                
                                                         
                                
                                                         
                                
                                                         
 
    