Form
n/a.ターゲット
9. Form
<form>
<label>
Name:
<input type="text" name="name" />
</label>
<input type="submit" value="Submit" />
</form>
9-1. せいぎょようそ
export default function ControlledComponent() {
const [name, setName] = useState("");
const [essay, setEssay] = useState("");
const [flavor, setFlavor] = useState("");
function handleChange(event) {
setName(event.target.value);
}
function handleEssayChange(event) {
setEssay(event.target.value);
}
function handleFlavorChange(event) {
setFlavor(event.target.value);
}
function handleSubmit(event) {
alert(`name: ${name}, essay: ${essay}, flavor: ${flavor}`);
event.preventDefault();
}
return (
<form onSubmit={handleSubmit}>
<div>
<label>
Name:
<input name="name" type="text" value={name} onChange={handleChange} />
</label>
</div>
<div>
<label>
Essay:
<textarea name="essay" value={essay} onChange={handleChange} />
</label>
</div>
<div>
<label>
Pick your favorite flavor:
<select name="flavor" value={flavor} onChange={handleChange}>
<option value="grapefruit">Grapefruit</option>
<option value="lime">Lime</option>
<option value="coconut">Coconut</option>
<option value="mango">Mango</option>
</select>
</label>
</div>
<input type="submit" value="Submit" />
</form>
);
}
9-1-1. 制御素子は何ですか?
9-2-1. 複数入力の制御
event.target.name
の値でHandlerが何をするかを選択できます.function handleChange(event) {
setName(event.target.value);
}
function handleEssayChange(event) {
setEssay(event.target.value);
}
function handleFlavorChange(event) {
setFlavor(event.target.value);
}
<input name="name" type="text" value={name} onChange={handleChange} />
<textarea name="essay" value={essay} onChange={handleChange} />
<select name="flavor" value={flavor} onChange={handleChange}>
<option value="grapefruit">Grapefruit</option>
<option value="lime">Lime</option>
<option value="coconut">Coconut</option>
<option value="mango">Mango</option>
</select>
function handleChange(event) {
const name = event.target.name;
if (name === "name") {
setName(event.target.value);
}
if (name === "essay") {
setEssay(event.target.value);
}
if (name === "flavor") {
setFlavor(event.target.value);
}
}
9-2. ひせいぎょそし
export default function UncontrolledComponent() {
const fileInput = useRef(null);
function handleSubmit(event) {
event.preventDefault();
alert(`Selected file - ${fileInput.current.files[0].name}`);
}
return (
<form onSubmit={handleSubmit}>
<label>
Upload file:
<input type="file" ref={fileInput} />
</label>
<br />
<button type="submit">Submit</button>
</form>
);
}
file
の素子は典型的な非制御素子であり、これは、設定値をプログラミングできず、ユーザのみが値を設定できるためである.ref
を使用してDOMからフォーム値を取得することができる.9-2-1. 非制御素子は何ですか?
ソース
Reference
この問題について(Form), 我々は、より多くの情報をここで見つけました https://velog.io/@dev0408/react-official-document-8-hak8knlcテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol