即使组件重新渲染,输入值如何保持不变?

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 以反映状态的变化。这并不意味着组件被重新创建并分配了它开始时的初始状态。

在这种情况下,每当输入更改时,值变量都会更新为输入元素中输入的内容。