PUROGU LADESU

ポエムがメインのブログです。

React フォーム

フォーム

  • 制御コンポーネント Controlled Component useStateを使い、stateで値を保持する name属性とstateプロパティの名前を一致させる 値はvalueに設定する。
const [form, setForm] = useState({email:"xx@xx"})
<input name="email" value={form.email} />

算出プロパティ名。変数を[]で囲うとプロパティ名として使える
setForm(
  { ...form, [e.target.name]: e.target.value }
)
  • 非制御コンポーネント Uncontrolled Component stateで保持せず、使う際に取得する useRefは必ずnullにする。値を入れると変更できなくなる。 値はrefに設定する。 初期値はvalue,checked要素は使わない。defaultValue,defaultCheckedを使う。
const email = useRef(null);
<input name="email" ref={email} defaultValue="xx@xx"/>
email.current.value で取得。
テキストエリア <textarea value={form.memo} />
選択 <select value={form.fruits} />
選択複数 <select multiple={true} value={配列で渡す} /> e.target.optionsから取得
ラジオ <input type="radio" checked={form.sex === "male"} value="male" />
チェック <input type="checkbox" checked={form.send} />
チェック複数 <input type="checkbox" checked={form.cars.includes("toyota")} value="toyota" /> includesでデータにあったらチェック
ファイル <input type="file" > 
const file = useRefを使い、file.current.files[0]で取得