广告
返回顶部
首页 > 资讯 > 精选 >React中的setState/useState怎么使用
  • 645
分享到

React中的setState/useState怎么使用

2023-07-05 22:07:07 645人浏览 薄情痞子
摘要

这篇文章主要介绍“React中的setState/useState怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React中的setState/useState怎么使用”文章能帮助大家解决问

这篇文章主要介绍“React中的setState/useState怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React中的setState/useState怎么使用”文章能帮助大家解决问题。

    一、React如何使用setState/useState的最新的值

    一般是可以正常的把最新的值,传递给所需要的函数中的,但是有些情况,需要使用最新数据的函数,不可改动,甚至所需要使用的地方并不是一个函数,那我们如何获取setState/useState的最新的值呢?

    A.使用setState的最新的值

    setState方法可以接收两个参数,第一个参数为一个对象,第二个参数为一个函数,即更新成功后执行的回调函数。我们可以在回调函数中获取更新后的值。

    import React, { Component } from 'react'export default class DemoClassComp extends Component {  constructor(props) {    super(props)    this.state = {      number: 1,    }  }  inControl = ()=>{    this.setState({number: 1}, () => {      console.log('%c ???? DemoClassComp -> inControl -> this.state.number ', 'font-size:16px;background-color:#f31440;color:white;', this.state.number)    })  }  render() {    return (      <div>        <button onClick={this.inControl} >点我</button>      </div>    )  }}

    使用setTimeout

    B.使用useState的最新的值

    使用另一个Hook,useRef;

    function DemoFuncComp() {  const [qimingFlag, setQimingFlag] = useState(false);  const qimingFlagRef = useRef(false);  const handleLine = () => {    deleteQimingFieldsData(data, qimingFlagRef?.current); /  useEffect(() => {    initData();  }, [contractId]);  return (    <>      <FORM dataSet={basicInfoHeader} disabled={true} columns={4}>        <Lov name="receiverObj" />    </Form>    </>  )}

    使用setTimeout

    二、React中setState/useState执行的同步异步问题

    只要代码进入了 react调度流程,那就是异步的。

    只要代码没有进入 react调度流程,那就是同步的。

    setTimeout、setInterval、async中await的后续部分,Promise.then(),以及直接在 DOM 上绑定原生事件等。这些都不会走 React调度流程,在这种情况下调用 setState ,那这次 setState 就是同步的。 否则就是异步的。

    连续执行两个 useState

    function DemoFuncComp() {  const [a, setA] = useState(0);  const [b, setB] = useState(0);  console.log('render')  function outControl() {    Promise.resolve().then(() => {      setA((a) => a + 1);      setB((b) => b + 1);    })  }  function inControl() {    setA((a) => a + 1);    setB((b) => b + 1);  }  return (    <>      <button onClick={outControl} >{a}-{b} 【不受react调度】</button>      <button onClick={inControl} >{a}-{b} 【react调度】</button>    </>  )}//! 当点击【不受react调度】按钮时,render 了两次//! 当点击【react调度】按钮时,只重新 render 了一次

    连续执行两次同一个 useState

    function DemoFuncComp() {  const [a, setA] = useState(1)  console.log('a', a)  function outControl() {    Promise.resolve().then(() => {      setA((a) => a + 1)      setA((a) => a + 1)    })  }  function inControl() {    setA((a) => a + 1)    setA((a) => a + 1)  }  return (    <>      <button onClick={outControl} >{a} 【不受react调度】</button>      <button onClick={inControl} >{a} 【react调度】</button>    </>  )}//! 当点击【不受react调度】按钮时,两次 setA 各自 render 一次,分别打印 2,3//! 当点击【react调度】按钮时,两次 setA 都执行,但合并 render 了一次,打印 3

    连续执行两个 setState

    class DemoClassComp extends React.Component {  constructor(props) {    super(props)    this.state = {      a: 1,      b: 'b',    }  }  outControl = () => {    Promise.resolve().then(() => {      this.setState({...this.state, a: 'aa'})      this.setState({...this.state, b: 'bb'})    })  }  inControl = () => {    this.setState({...this.state, a: 'aa'})    this.setState({...this.state, b: 'bb'})  }  render() {    console.log('render')    return (      <>        <button onClick={this.outControl} >【不受react调度】</button>        <button onClick={this.inControl} >【react调度】</button>      </>    )  }}//! 当点击【不受react调度】按钮时,render 了两次//! 当点击【react调度】按钮时,只重新 render 了一次

    连续执行两次同一个 setState

    class DemoClassComp extends React.Component {  constructor(props) {    super(props)    this.state = {      a: 1,    }  }  outControl = () => {    Promise.resolve().then(() => {      this.setState({a: this.state.a + 1})      this.setState({a: this.state.a + 1})    })  }  inControl = () => {    this.setState({a: this.state.a + 1})    this.setState({a: this.state.a + 1})  }  render() {    console.log('a', this.state.a)    return (      <>        <button onClick={this.outControl} >【不受react调度】</button>        <button onClick={this.inControl} >【react调度】</button>      </>    )  }}//! 当点击【不受react调度】按钮时,两次 setState 各自 render 一次,分别打印 2,3//! 当点击【react调度】按钮时,两次 setState 合并,只执行了最后一次,打印 2

    关于“React中的setState/useState怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: React中的setState/useState怎么使用

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

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

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • React中的setState/useState怎么使用
      这篇文章主要介绍“React中的setState/useState怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React中的setState/useState怎么使用”文章能帮助大家解决问...
      99+
      2023-07-05
    • React中setState/useState的使用方法详细介绍
      目录一、React如何使用setState/useState的最新的值A.使用setState的最新的值B.使用useState的最新的值二、React中setState/useSt...
      99+
      2023-05-14
      React setState与useState React setState React useState
    • react中useState有什么用
      这篇文章主要介绍react中useState有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!useStateuseState 通过在函数组件里调用它来给组件添加一些内部 state。React 会在重复渲染时保...
      99+
      2023-06-15
    • react中state以及setState怎么用
      这篇文章主要介绍react中state以及setState怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在react中通过 state 以及 setState() 来控制组件的...
      99+
      2022-10-19
    • setState如何在react 中使用
      setState如何在react 中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。setState是同步还是异步自定义合成事件和react钩子函数中异步更新state以...
      99+
      2023-06-14
    • React中setState使用原理解析
      目录setState使用详解使用setState的原因setState的基本用法setState的异步更新setState获取异步结果setState一定是异步setState使用详...
      99+
      2022-11-13
      React setState使用 React setState
    • react中使用usestate踩坑及解决
      目录usestate的常规用法useState遇到的坑1、useState不适合复杂对象的更改2、useState异步回调的问题3、根据hook的规则,使用useState的位置有限...
      99+
      2022-11-13
      react使用usestate usestate踩坑 react中usestate
    • React中hook函数与useState及useEffect的使用
      目录1. 简介2. useState使用3. useEffect使用useEffect发起网络请求1. 简介 在 React 的世界中,有容器组件和 UI 组件之分,在 React ...
      99+
      2022-11-13
    • react中setstate的概念是什么
      这篇文章主要介绍“react中setstate的概念是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react中setstate的概念是什么”文章能帮助大家解决...
      99+
      2022-10-19
    • React中setState的使用与同步异步的使用
      在react中,修改状态如果直接使用this.state,不会引起组件的重新渲染,需要通过 this.setState来对组件的属性进行修改。 1、this.setState的两种...
      99+
      2022-11-11
    • 示例详解react中useState的用法
      useState useState 通过在函数组件里调用它来给组件添加一些内部 state。React 会在重复渲染时保留这个 state。useState 会返回一对值:当前状态...
      99+
      2022-11-12
    • React中setState同步异步场景的使用
      目录setState同步异步场景描述原理保证内部数据统一启用并发更新参考setState同步异步场景 React通过this.state来访问state,通过this.setStat...
      99+
      2022-11-13
    • React组件中的state和setState如何使用
      本篇内容主要讲解“React组件中的state和setState如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React组件中的state和setState如何使用”吧!state的基本...
      99+
      2023-06-29
    • react中usestate改变值不渲染怎么解决
      这篇文章主要介绍“react中usestate改变值不渲染怎么解决”,在日常操作中,相信很多人在react中usestate改变值不渲染怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
      99+
      2022-10-19
    • React中setState的更新机制是什么
      这篇文章主要介绍“React中setState的更新机制是什么”,在日常操作中,相信很多人在React中setState的更新机制是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
      99+
      2022-10-19
    • React中setState如何使用与如何同步异步
      这篇文章主要介绍“React中setState如何使用与如何同步异步”,在日常操作中,相信很多人在React中setState如何使用与如何同步异步问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”React中s...
      99+
      2023-06-14
    • React中的setState使用细节和原理解析(最新推荐)
      目录setState使用详解使用setState的原因setState的基本用法setState的异步更新setState获取异步结果setState使用详解 前面我们有使用过set...
      99+
      2022-12-19
      React中setState使用原理 React中setState使用
    • 使用react在修改state中的数组和对象数据的时候(setState)
      目录react修改state的数组和对象数据的时候(setState)需要注意react修改数组对象的注意事项删除数组中的指定元素合并两个对象修改多层级对象的值react修改stat...
      99+
      2022-11-13
    • react中useState使用:如何实现在当前表格直接更改数据
      目录如何实现在当前表格直接更改数据需求效果如下具体做法useState修改对象的字段如何实现在当前表格直接更改数据 需求 用户点击修改按钮时直接在弹出框的当前页面内直接再次修改点击行...
      99+
      2022-11-13
      react使用useState 表格更改数据 react中useState
    • JavaScript中的useRef 和 useState有什么用
      小编给大家分享一下JavaScript中的useRef 和 useState有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、useS...
      99+
      2023-06-21
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作