React 设计模式~容器组件/不受控制的受控组件~
来源:dev.to
2024-09-24 18:52:01
0浏览
收藏
知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个文章开发实战,手把手教大家学习《React 设计模式~容器组件/不受控制的受控组件~》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

这种模式意味着 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 设计模式~容器组件/不受控制的受控组件~》的详细内容,更多关于的资料请关注golang学习网公众号!
- 下一篇
- win10系统下任务栏变大的设置步骤