【发布时间】:2023-03-13 17:45:01
【问题描述】:
因此,如果每次 UI 更新必须仅在组件的“状态”或“道具”发生更改时发生,那么为什么受控输入会更改回状态内部的值,当状态未更新且没有任何内容时触发了更新周期?
【问题讨论】:
-
请向我们展示您所指的代码。
标签: javascript reactjs forms input
因此,如果每次 UI 更新必须仅在组件的“状态”或“道具”发生更改时发生,那么为什么受控输入会更改回状态内部的值,当状态未更新且没有任何内容时触发了更新周期?
【问题讨论】:
标签: javascript reactjs forms input
在受控组件中,该值等于您作为道具传递给它的值。
如果该值没有改变,那么该受控组件的值也不会改变。
因此,通常在受控组件中,您将作为 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
【讨论】: