![](/img/trans.png)
[英]How to update a state without re-rendering using useState hook
[英]How does react hook works? And how come the value tracked by useState does not reset on re-rendering?
我是 React 的新手,并试图将我的头放在钩子上,尤其是在函数组件中使用时。
下面是一个使用useState
钩子的例子:
import React, { useState } from "react";
const StateTutorial = () => {
const [inputValue, setInputValue] = useState("Pedro");
let onChange = (event) => {
const newValue = event.target.value;
setInputValue(newValue);
};
return (
<div>
<input placeholder="enter something..." onChange={onChange} />
{inputValue}
</div>
);
};
export default StateTutorial;
这是取自这里
我了解如何使用它。 我知道每次调用setInputValue
,状态都会更新,视图会重新渲染,我们会看到inputValue
的新值。
我假设,重新渲染将涉及再次调用StateTutorial
函数。
那么我的问题是,如果在重新渲染时调用StateTutorial
,那么inputValue
值为什么没有重置为初始值? 功能组件和反应钩子是如何工作的? useState
跟踪的状态怎么可能在重新渲染时没有重置为初始值,因为查看代码这是我所期望的。
为了保持简短:
您可能熟悉虚拟 DOM 的概念。 如果没有,那么想象一下 react 保留了实际浏览器 DOM 的表示,在内存中表示为 JavaScript 对象。 然后使用虚拟 DOM 进行多项优化。
在钩子的情况下,钩子的值被附加到组件的虚拟节点。 由于组件的实际虚拟节点对象在重新渲染StateTutorial
保持StateTutorial
,因此也保留了实际的钩子值。
就我个人而言,我发现构建你自己的 React 教程是一种很好且非常易于理解的方式,可以更好地理解这些概念。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.