
这种模式意味着 react 不控制表单数据,dom 保存表单状态。
访问 dom 时,必须使用 useref 钩子设置 ref 属性。
・src/components/uncontrol-form.jsx
import react from "react";
export const uncontrolledform = () => {
const nameinputref = react.createref();
const ageinputref = react.createref();
console.log("renedering");
const submitform = (e) => {
console.log(nameinputref.current.value);
console.log(ageinputref.current.value);
e.preventdefault();
};
return (
<form onsubmit={submitform}>
<input name="name" type="text" placeholder="name" ref={nameinputref} />
<input name="age" type="number" placeholder="age" ref={ageinputref} />
<input type="submit" value="submit" />
</form>
);
};
此模式意味着 react 使用 usestate 钩子控制表单数据。
我们可以完全控制输入值并实时更新。
import React, { useEffect, useState } from "react";
export const ControlledForm = () => {
const [errorMessage, setErrorMessage] = useState("");
const [name, setName] = useState("");
const [age, setAge] = useState();
useEffect(() => {
if (name.length < 1) {
setErrorMessage("name can not be empty");
} else {
setErrorMessage("");
}
}, [name]);
return (
<form>
{errorMessage&& <p>{errorMessage}</p>}
<input
type="text"
name="name"
placeholder="Name"
value={name}
onChange={(e) => setName(e.target.value)}
/>
<input
type="number"
name="age"
placeholder="Age"
value={age}
onChange={(e) => setAge(e.target.value)}
/>
<button>Submit</button>
</form>
);
};
以上就是React 设计模式~容器组件/不受控制的受控组件~的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号