挂钩和反应——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