2020-01-03
Reactの基礎をおさらいしていきます。
今回はyarn、create-react-appを利用し、環境を作成していきます。
Homebrewでyarnをインストールします。
また、Node.js環境が必要です。nodenvなどでインストールしておいてください。
create-react-appはReactのアプリケーション環境をコマンド1つで作成してくれるツールです。
yarnでグローバルにインストールします。
create-react-appでReactアプリケーションを作成します。
以上で環境構築は完了です。
JSXの記法を使うと、JavascriptでHTMLのような記法ができます。
例えば、以下の2つの構文は同じ挙動となります。
src/App.jsを編集します。
src/App.js
src/App.js
上がjsで、下がjsxの記法です。
render関数の中で、HTMLに似た記法が出来るため、可読性が高いという利点があります。
JSXで書く場合、必ずReact
をインポートする必要があります。
また、HTMLの中にJavascriptの処理を書くことも出来ます。
src/App.js
JSX内にJavaScriptを記述したい場合は、{}
で囲みます
labelタグのfor属性を追加したい場合は、htmlFor
と記述するなど、素のHTMLとは異なる記述をする場合があります。
Reactのコンポーネントをパーツごとに適切に分けることで、再利用性が高まり、メンテナンスコストが下がります。
例えば、以下のようにDogコンポーネントを作成すると、繰り返しDogコンポーネントを利用出来ます。
src/App.js
子コンポーネントに値を渡したい場合はpropsを使います。
src/App.js
Userコンポーネントにnameとageをpropsとして渡しています。
受け取る場合は引数として受け取ることができます。
propsはstateと異なり、不変な値(イミュータブル)である点に注意してください。
また、繰り返しの処理を行う場合はkey属性が必要です。
defaultProps
User.defaultProps
で、propsの初期値を設定することも出来ます。
propTypes
User.propTypes
を設定することで、型を指定することもできます。
Stateを利用することで、コンポーネント内で、状態の変化を察知し、再レンダリングすることが出来るようになります。
+1ボタンを
src/App.js
初期表示時、render()が呼ばれ、コンストラクタで設定されたStateの値0
が表示されます。
その後+1ボタンが押下した場合、handlePlusButton関数がコールされ、関数内でsetState関数が呼ばれます。
setState()はReactの機能で状態を変更する関数です。
setState関数内でstate.countの状態を+1することで、stateの状態を更新します。
更新されると、render()が再度呼ばれ、更新されたstate.countの値1
が表示されます。
stateの値が更新されるたびに、render()が呼ばれる点は大事なポイントです。
また、setState()以外で状態を更新することは出来ません。