首页 > 其他分享 >挂钩和反应——useState

挂钩和反应——useState

时间:2022-09-25 11:59:24浏览次数:76  
标签:状态 更改 挂钩 更新 setCount React 反应 useState

挂钩和反应——useState

简单来说,useState 钩子用于跟踪功能组件中的状态。但是我们为什么要使用 useState 呢?我们不能只使用一个简单的变量来显示这一点吗?这有什么问题?

现在在这里你可以试试这个。主要问题是变量的更改不允许重新渲染组件本身。如果状态发生变化,那么它将重新渲染。因此,即使您正在更新变量,它也不会对 UI 产生任何影响。

那么 useState 在语法上是如何工作的呢?

所以 useState 接受一个参数并返回两个值,当前状态如上例中的 count 和更新该值的函数,即 setCount。

因此,当 setCount 被调用时,它会更新计数,从而更新 UI。正如您可以在下面的沙箱中检查。

幕后工作是什么?每当状态更新功能组件时。 Fiber 树中的 React 更新(Fiber 树是 React 中 DOM 的表示)。元素/组件的节点得到更新。因此,所有内容都在组件中计算,并且 UI 在这些计算中再次呈现。此节点更改导致 React Virtual DOM 中的更改。一旦在虚拟 DOM 中完成更改。 Real DOM 得到更新,然后我们在浏览器中看到变化。

现在有一些想法。您可能知道,setState 是异步的。同样,useState 也是异步的。实际上不是useState,而是我们从useState 得到的函数,即useCount。

因此,如果我们在更新 setCount 后立即控制计数。然后它不会显示任何更改。因为它本质上是异步的。它不会立即显示结果。

现在,如果您想立即更新,您可以使用该做什么。你可以使用这个。在引擎盖下,它使用了闭包的概念。

现在还有一件事也不要不必要地使用状态。如果任何道具或状态更改需要一些计算。不要将其置于状态,因为它只会导致额外的渲染。

现在在 v18 中引入了批处理概念。所以发生的情况是立即对 setCount (setState) 进行批处理,然后不断更新它们,从而优化并减少重新渲染。

所以总结一下:setState 是 React 最基本的状态管理钩子。你可以在 React 中使用 useReducer 来维护 React 中的复杂状态。

感谢您阅读本文!…

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/39246/39332511

标签:状态,更改,挂钩,更新,setCount,React,反应,useState
From: https://www.cnblogs.com/amboke/p/16727560.html

相关文章

  • JSX反应语法-转载
    JSX语法详解在之前的react基础文章中,创建元素使用的是React.createElement()方法,利用方法创建单层元素还算可以,可是如果出现嵌套结构,使用这种方法就会比较繁琐而且......
  • el-upload 只执行一次上传就没反应了
    原因是浏览器还保存着我们已经上传的文件,所以应该在上传成功后清除掉这样就可以继续上传了......
  • 使用 Refs 反应功能组件
    使用Refs反应功能组件—带有forwardRef和useImperativeHandle的示例逆境中成长—growinadversity我一直不清楚参考和前向引用,在做了一些研究之后,我想写......
  • 让我们深入了解 React 中的 useState 和 useRef Hooks
    让我们深入了解React中的useState和useRefHooksPhotoby沙哈达特·拉赫曼on不飞溅如果我问你什么是钩子,那么你会说钩子是类的替代品,可以让你在不编写类的情......
  • 终极反应 Formik 指南
    终极反应Formik指南FormikFeaturesinReactFormik是最流行的用于React和ReactNative表单处理的开源库甲酸有许多特性使这个库更强大不需要任何useSt......
  • Qt Creator用UI编辑器修改UI后无反应
    今天打开别人的工程,用Qt编辑器修改了一下UI,发现根本没有反应,经多方面摸索,解决如下:方法一:方法二:2021-11-23再次确认,打开别人的代码时,别人没有勾选Shadowbu......
  • 阿卡佩拉 |用 Javascript 制作 |反应 JS
    阿卡佩拉|用Javascript制作|反应JS阿卡佩拉|用Javascript制作|反应JSAcapela可让您控制通知。从一个地方捕获、过滤和操作它们。以两倍的速度解锁您的团队......
  • React Hooks { useState, useEffect }
    ReactHooks{useState,useEffect}使用状态UseState钩子是在React16.8中引入的。它允许您跟踪状态功能组件。你可能会问自己什么状态?好吧,状态通常是指组件中的动......
  • 自定义反应钩子。它们是什么以及它们有什么帮助?
    自定义反应钩子。它们是什么以及它们有什么帮助?Photoby劳塔罗·安德里亚尼on不飞溅介绍ReactHooks是在React.jsv16.8中引入的。它们允许我们在功能组件中使......
  • 反应上下文
    反应上下文ReactContextD耳朵伙计们:反应上下文API今天将讨论。React最好的特性之一是ReactContextAPI。如果你有兴趣,你应该继续阅读,因为这将是一个了不起的......