Open11

React逆引きリファレンス

てりーてりー

React inputタグ

hooksでinput値を扱うとエラー出る


内容的には制御されたコンポーネントを使ってくれとの事。

inputなどのフォームタグのDOMは自分たちで状態を維持し更新する機能があるため、Reactのstateとバッティングして上記のエラーが出ている。

valueにuseStateを使い、初期値を設定してあげれば解決する。

参考:
https://reactjs.org/docs/forms.html#controlled-components
https://qiita.com/FumioNonaka/items/0b4771fdce748e0d67ce

複数のinputを使う場合

Image from Gyazo
inputタグ毎にuseStateで定義することも出来るがDRYじゃない(同じ内容の繰り返しは良くない)ので、上手く対処したい。

結論 inputで扱う値をオブジェクトで管理する

複数の場合、useStateで扱うvalueをオブジェクトで管理する。
keyにnameを入れてどの値を更新するか判定。
valueの値はスプレット演算子を使って更新

サンプルコード:https://codesandbox.io/s/optimistic-ellis-qcfuo?file=/src/App.js
参考:https://dev.to/deboragaleano/how-to-handle-multiple-inputs-in-react-55el

てりーてりー

JSX の導入

https://ja.reactjs.org/docs/introducing-jsx.html

Reactではマークアップとロジックの両方をJavaScriptにまとめて書く形式のJSXを用いる。
これによってコンポーネント単位での関心の分離が可能になる

XSS対策

React DOM は JSX に埋め込まれた値をレンダー前にエスケープするので、クロスサイトスクリプションの対策が既にできている。