【问题标题】:Does react change the controlled input value even when the state hasn't changed?即使状态没有改变,反应也会改变受控输入值吗?
【发布时间】:2023-03-13 17:45:01
【问题描述】:

因此,如果每次 UI 更新必须仅在组件的“状态”或“道具”发生更改时发生,那么为什么受控输入会更改回状态内部的值,当状态未更新且没有任何内容时触发了更新周期?

【问题讨论】:

  • 请向我们展示您所指的代码。

标签: javascript reactjs forms input


【解决方案1】:

在受控组件中,该值等于您作为道具传递给它的值。

如果该值没有改变,那么该受控组件的值也不会改变。

因此,通常在受控组件中,您将作为 onChange 属性传递一个回调函数来更改值。如果该回调函数不改变值,则输入的值不会改变。

例如

const App = () => {
  const [value, setValue] = useState("");
  return (
    <div>
      <input value={value} onChange={(e) => {}} />
    </div>
  );
};

无论我们如何尝试写入此输入,它的值将始终保持为空字符串“”。由于 on change 方法不会更新值状态。

所以要明确你的问题,状态并没有恢复到初始值,而是它永远不会改变,html 元素也是如此 - 输入的值永远不会改变。

codepen 示例:https://codepen.io/besnikkorca/pen/rNOVXzx

【讨论】:

    猜你喜欢
    • 2015-03-25
    • 2019-07-22
    • 2021-11-25
    • 2020-04-22
    • 2021-06-18
    • 1970-01-01
    • 2019-03-27
    • 2020-06-23
    • 2018-01-09
    相关资源
    最近更新 更多