即使组件重新渲染,输入值如何保持不变?
How does input value stay same even though component re-render?
我有一个非常基本的 React 组件,如下所示。据我所知,每次状态值改变时,这个组件都会重新渲染。但我想知道的是,如果每次我在输入字段中输入内容时组件都重新渲染,为什么输入值保持不变而不返回空值?
import React, { useState } from "react";
const InputExample = () => {
const [value, setValue] = useState("");
console.log("render");
return (
<>
<input type="text" onChange={(e) => setValue(e.target.value)} />
</>
);
};
export default InputExample;
因为未设置值,它被认为是“不受控制的”并执行默认的 html 行为。为了将其保留为空值,您必须执行以下操作:
import React, { useState } from "react";
const InputExample = () => {
const [value, setValue] = useState("");
console.log("render");
return (
<>
<input type="text" onChange={(e) => setValue(e.target.value)} value="" />
</>
);
};
export default InputExample;
您混淆了重新渲染和重新初始化。重新渲染只是更新 DOM 以反映状态的变化。这并不意味着组件被重新创建并分配了它开始时的初始状态。
在这种情况下,每当输入更改时,值变量都会更新为输入元素中输入的内容。
我有一个非常基本的 React 组件,如下所示。据我所知,每次状态值改变时,这个组件都会重新渲染。但我想知道的是,如果每次我在输入字段中输入内容时组件都重新渲染,为什么输入值保持不变而不返回空值?
import React, { useState } from "react";
const InputExample = () => {
const [value, setValue] = useState("");
console.log("render");
return (
<>
<input type="text" onChange={(e) => setValue(e.target.value)} />
</>
);
};
export default InputExample;
因为未设置值,它被认为是“不受控制的”并执行默认的 html 行为。为了将其保留为空值,您必须执行以下操作:
import React, { useState } from "react";
const InputExample = () => {
const [value, setValue] = useState("");
console.log("render");
return (
<>
<input type="text" onChange={(e) => setValue(e.target.value)} value="" />
</>
);
};
export default InputExample;
您混淆了重新渲染和重新初始化。重新渲染只是更新 DOM 以反映状态的变化。这并不意味着组件被重新创建并分配了它开始时的初始状态。
在这种情况下,每当输入更改时,值变量都会更新为输入元素中输入的内容。