返回顶部
首页 > 资讯 > 精选 >React setState异步原理是什么
  • 264
分享到

React setState异步原理是什么

2023-07-04 14:07:34 264人浏览 独家记忆
摘要

本文小编为大家详细介绍“React setState异步原理是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“React setState异步原理是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习

本文小编为大家详细介绍“React setState异步原理是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“React setState异步原理是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    setState异步更新

    开发中当组件中的状态发生了变化,页面并不会重新渲染。我们必须要通过setState来告知React数据已经发生了变化,重新渲染页面。

    先来看下面的例子:

    constructor() {    super();    this.state = {      message: "Hello World",    };}changeText() {   this.setState({      message: "Hello React",   });   console.log(this.state.message); // Hello World}

    最终打印的结果是Hello World;

    可见setState是异步的操作,我们并不能在执行完setState之后立马拿到最新的state的结果

    那么为什么setState设计为异步呢?

    setState设计为异步,可以显著的提升性能

    • 如果每次调用setState都进行一次更新,那么意味着render函数会被频繁调用,界面重新渲染,这样效率是很低的;

    • 最好的办法是获取多个更新,之后进行批量处理;

    如果同步更新了state,但是还没有执行render函数,那么state和props不能保持同步;

    state和props不能保持一致性,会在开发中产生很多的问题;(比如,组件嵌套时影响子组件中的状态)

    如何获取异步的结果

    setState的回调

    setState接受两个参数:第二个参数是一个回调函数,这个回调函数会在更新后会执行;

    changeText() {    this.setState({      message: "Hello React",    },()=>{        console.log('-----',this.state.message); // Hello React    });  }

    也可以在生命周期函数中获取:

       componentDidUpdate(prevProps, prevState, snapshot){   console.log(this.state.message);// Hello React   }

    setState一定是异步的吗?

    React18版本之前

    其实可以分成两种情况:

    • 在组件生命周期或React合成事件中,setState是异步的;

    • 在setTimeout或者原生DOM事件中,setState是同步的

    验证一:在setTimeout中的更新:

    setTimeout(() => {      this.setState({        message: "Hello React",      });      console.log(this.state.message); // Hello React }, 0);

    验证二:原生DOM事件:

    componentDidMount() {    const btnEl = document.querySelector("#btn");    btnEl.addEventListener("click", () => {      this.setState({        message: "Hello React",      });      console.log(this.state.message); // Hello React    });  }

    React18版本之后

    setState默认是异步的

    • 在React18之后,默认所有的操作都被放到了批处理中(异步处理)

    React setState异步原理是什么

    如果希望代码可以同步拿到,则需要执行特殊的flushSync操作:

    import { flushSync } from "react-dom";changeText() {    flushSync(() => {      this.setState({        message: "Hello React",      });    });    console.log(this.state.message); // Hello React  }

    读到这里,这篇“React setState异步原理是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

    --结束END--

    本文标题: React setState异步原理是什么

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

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

    猜你喜欢
    • React setState异步原理是什么
      本文小编为大家详细介绍“React setState异步原理是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“React setState异步原理是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
      99+
      2023-07-04
    • React 中的 setState 是同步还是异步
      setState 是同步还是异步?肯定是异步的呀。 确定么?那看一下这段代码会打印什么: import { Component } from 'react'; class Dong ...
      99+
      2024-04-02
    • react的setstate同步情况是什么
      本文小编为大家详细介绍“react的setstate同步情况是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“react的setstate同步情况是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。react...
      99+
      2023-07-04
    • react的setstate什么时候同步
      本教程操作环境:Windows10系统、react18.0.0版、Dell G3电脑。react的setstate什么时候同步?什么时候是异步的? 先给出答案: 有时表现出异步,有时表现出同步。setState只在合成事件和钩子函数中是“异...
      99+
      2023-05-14
      setstate React
    • 关于React中setState同步或异步问题的理解
      目录1. setState同步?异步? 2. 表现为异步 1. React 合成事件 2. 生命周期函数 3. 表现为同步 1. 原生事件 2. setTimeout 4. setS...
      99+
      2024-04-02
    • React中setState同步异步场景的使用
      目录setState同步异步场景描述原理保证内部数据统一启用并发更新参考setState同步异步场景 React通过this.state来访问state,通过this.setStat...
      99+
      2024-04-02
    • React中setState同步和异步的示例分析
      这篇文章主要介绍React中setState同步和异步的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! React起源于Facebook的内部项目。React的出现是革命性的创新,React的是一个...
      99+
      2023-06-15
    • React中setState使用原理解析
      目录setState使用详解使用setState的原因setState的基本用法setState的异步更新setState获取异步结果setState一定是异步setState使用详...
      99+
      2022-11-13
      React setState使用 React setState
    • 代码解析React中setState同步和异步问题
       React起源于Facebook的内部项目。React的出现是革命性的创新,React的是一个颠覆式的前端框架。在React官方这样介绍的它:一个声明式、高效、灵活的、创...
      99+
      2024-04-02
    • React中setState的使用与同步异步的使用
      在react中,修改状态如果直接使用this.state,不会引起组件的重新渲染,需要通过 this.setState来对组件的属性进行修改。 1、this.setState的两种...
      99+
      2024-04-02
    • React中setState如何使用与如何同步异步
      这篇文章主要介绍“React中setState如何使用与如何同步异步”,在日常操作中,相信很多人在React中setState如何使用与如何同步异步问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”React中s...
      99+
      2023-06-14
    • react中setstate的概念是什么
      这篇文章主要介绍“react中setstate的概念是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react中setstate的概念是什么”文章能帮助大家解决...
      99+
      2024-04-02
    • React 中 setState 的异步操作案例详解
      目录前言React 中的 setState 为什么需要异步操作?什么时候setState会进行同步操作?前言 在使用state的时候, 如果我们企图直接...
      99+
      2024-04-02
    • React中setState同步或异步问题的示例分析
      这篇文章主要为大家展示了“React中setState同步或异步问题的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“React中setState同步或异步问题的示例分析”这篇文章吧。1....
      99+
      2023-06-25
    • unity异步加载原理是什么
      Unity的异步加载原理是利用协程(Coroutine)和异步操作(AsyncOperation)来实现的。在Unity中,协程是一...
      99+
      2023-09-29
      unity
    • React中setState的更新机制是什么
      这篇文章主要介绍“React中setState的更新机制是什么”,在日常操作中,相信很多人在React中setState的更新机制是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
      99+
      2024-04-02
    • webpack的异步加载原理是什么
      这篇文章主要讲解了“webpack的异步加载原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“webpack的异步加载原理是什么”吧!webpack ...
      99+
      2024-04-02
    • dubbo异步调用的原理是什么
      Dubbo异步调用的原理是通过使用线程池来实现异步调用。首先,服务消费者发送请求给服务提供者,然后服务提供者将请求放入线程池中进行处...
      99+
      2023-10-23
      dubbo
    • Vue 中异步更新的原理是什么
      今天就跟大家聊聊有关Vue 中异步更新的原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Vue 异步更新 DOM 原理很多同学都知道,Vue...
      99+
      2024-04-02
    • C#中异步调用的原理是什么
      本篇文章为大家展示了C#中异步调用的原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C#异步调用是什么呢?具体的内容又是什么呢?让我们开始C#异步调用的学习吧计算机中有些处理比较耗时。调用这...
      99+
      2023-06-17
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作