返回顶部
首页 > 资讯 > 前端开发 > JavaScript >React中的useEffectuseLayoutEffect到底怎么用
  • 719
分享到

React中的useEffectuseLayoutEffect到底怎么用

ReactuseEffectReactuseLayoutEffect 2023-02-06 18:02:30 719人浏览 安东尼
摘要

目录前言介绍使用空依赖非空依赖实现销毁操作两者区别前言 使用缘由: 在函数中当请求数据时并且给state赋值会导致整个函数刷新, 从而导致死循环的进行数据请求, 所以这时候可以用到u

前言

使用缘由:

在函数中当请求数据时并且给state赋值会导致整个函数刷新,

从而导致死循环的进行数据请求, 所以这时候可以用到useEffect

介绍

  • useEffect(处理副作用)
  • useLayoutEffect(同步执行副作用)

使用

空依赖

import axiOS from 'axios';
import React,{useEffect, useState} from 'react';
function Test2() {
    const [list,setlist] =useState([])
    useEffect(()=>{
        axios.get("./test.JSON").then(res=>{
            console.log(res.data)
            setlist(res.data)
        })
    },[])//参数1是函数,参数2是数组
    return (
        <div>
            {
            list.map(item=>
                <li key={item.id}>{item.name}</li>    
            )
            }
            
        </div>
    );
}
export default Test2;

传空数组表示无依赖,只执行一次

非空依赖

数组传依赖,当该依赖更新后也会进行执行(可以想象成class类的更新)

下方案例代表第一次执行,name被更新后也会进行执行


import axios from 'axios';
import React,{useEffect, useState} from 'react';
function Test3() {
    const [name,setname] =useState("peng-ke")
    useEffect(()=>{
        setname(name.substring(0,1).toUpperCase()+name.substring(1))
    },[name])//参数1是函数,参数2是数组
    return (
        <div>
            {name}
            <button onClick={()=>{setname("study")}}>修改</button>
        </div>
    );
}
export default Test3;

实现销毁操作

通过return函数执行销毁后的行为


import React,{Component, useEffect, useState} from 'react';
function Children() {
    const [name,setname] =useState("peng-ke")
    useEffect(()=>{
        window.onresize=()=>{
            console.log("resize")
        }
        let timer=setInterval(() => {
            console.log("ppppp")
        }, 1000);
        return ()=>{
            console.log("销毁");
            window.onresize=null;
            clearInterval(timer)
        }
    },[])
    return (
        <div>
            碰磕
        </div>
    );
}
class Test4 extends Component{
    state={
        iscreated:true
    }
    render(){
        return(
            <div>
                <button onClick={()=>{
                    this.setState({
                        iscreated:!this.state.iscreated
                    })
                }}>点我</button>
                {this.state.iscreated && <Children />}
            </div>
        )
    }
}
export default Test4;

两者区别

  • 调用时机不同,useLayoutEffect和原来的componentDidMount&componentDidUpdate一致,在react完成DOM更新后马上同步调用,这样会阻塞页面渲染,而useEffect是会在整个页面渲染完成才会调用所以推荐使用useEffect
  • 如果操作DOM的代码推荐放在useLayoutEffect中

到此这篇关于React中的useEffect useLayoutEffect到底怎么用的文章就介绍到这了,更多相关React useEffect useLayoutEffect内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: React中的useEffectuseLayoutEffect到底怎么用

本文链接: https://lsjlt.com/news/194384.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • React中的useEffectuseLayoutEffect到底怎么用
    目录前言介绍使用空依赖非空依赖实现销毁操作两者区别前言 使用缘由: 在函数中当请求数据时并且给state赋值会导致整个函数刷新, 从而导致死循环的进行数据请求, 所以这时候可以用到u...
    99+
    2023-02-06
    React useEffect React useLayoutEffect
  • React中useCallbackuseMemo到底该怎么用
    目录useCallback记忆函数前言介绍使用useMemo记忆组件两者区别使用useCallback记忆函数 前言 使用缘由: 防止因为组件重新渲染,导致方法被重新创建,起到缓存作...
    99+
    2023-02-06
    React useCallback React useMemo
  • React 中 memo useMemo useCallback 到底该怎么用
    目录React.memo怎么用React.useMemo怎么用React.memo()和useMemo()的主要区别React.useCallback怎么用memo与useMemo及...
    99+
    2022-11-13
    React memo useMemo useCallback React useMemo useCallback
  • React中怎么利用DOM实现动态吸底部
    React中怎么利用DOM实现动态吸底部,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。动态吸底:开始时fixed在页面上,当页面滚动到距离底部...
    99+
    2024-04-02
  • 怎么在React中做到jQuery-free
    这篇文章主要介绍怎么在React中做到jQuery-free,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言首先我们仍要说的是,jQuery 是现在***的 JavaScript ...
    99+
    2024-04-02
  • Python 中的协程,到底是怎么回事?
    一.传统的Sync语法请求例子还是一样, 在了解Async语法的实现之前, 先从一个Sync的语法例子开始, 现在假设有一个HTTP请求, 这个程序会通过这个请求获取对应的响应内容, 并打印出来, 代码如下:import socket de...
    99+
    2023-05-14
    代码 Python Async
  • Python中的类到底是什么
    这篇文章主要介绍“Python中的类到底是什么”,在日常操作中,相信很多人在Python中的类到底是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中的类到底是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-15
  • Kotlin中的contract到底有什么用详解
    目录前言测试总结前言 我们在开发中肯定会经常用Kotlin提供的一些通用拓展函数,当我们进去看源码的时候会发现许多函数里面有contract {}包裹的代码块,那么这些代码块到底有什...
    99+
    2024-04-02
  • react中的forceupdate怎么用
    本文小编为大家详细介绍“react中的forceupdate怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“react中的forceupdate怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深...
    99+
    2024-04-02
  • react中的canvas怎么用
    这篇“react中的canvas怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“rea...
    99+
    2024-04-02
  • react中的context怎么用
    这篇“react中的context怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“re...
    99+
    2024-04-02
  • react中的modal怎么用
    这篇文章主要介绍了react中的modal怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇react中的modal怎么用文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • react中的switch怎么用
    这篇文章主要介绍“react中的switch怎么用”,在日常操作中,相信很多人在react中的switch怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react中的s...
    99+
    2024-04-02
  • react中的key怎么使用
    这篇“react中的key怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“react...
    99+
    2024-04-02
  • React中的ref怎么使用
    这篇文章主要介绍“React中的ref怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React中的ref怎么使用”文章能帮助大家解决问题。1. ref 的理解与使用对于 Ref 的理解,要从...
    99+
    2023-07-04
  • react中的useMemo怎么使用
    今天小编给大家分享一下react中的useMemo怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。概念react 中是...
    99+
    2023-07-04
  • docker底层怎么做到隔离的
    Docker底层通过使用Linux内核的一些特性来实现隔离。具体来说,Docker通过以下几个机制来实现容器的隔离性: 命名空间...
    99+
    2023-10-26
    docker
  • react中能不能用到npm
    今天小编给大家分享的是react中能不能用到npm,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。 react中能用到np...
    99+
    2024-04-02
  • react中immutable.js怎么用
    这篇文章主要介绍react中immutable.js怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、对于react的来说,如果父组件有多个子组件想象一下这种场景,一个父组件下...
    99+
    2024-04-02
  • react中swipe怎么用
    这篇文章主要介绍了react中swipe怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 react swi...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作