Reactの基礎#1
※ 本記事にはアフィリエイト広告(Amazonアソシエイト・楽天アフィリエイト等)が含まれています。

React
ReactはJavaScriptのライブラリでMetaによって作られました。
ReactはSPA(Single Page Application)に対応すべく、動的ページ作成のためのライブラリです。
Reactだけではすべてを網羅できないので、ReactはほかのJavaScriptライブラリと連携します。
Reactが人気な理由は少ないコードで機能を実装できるからです。
DOM
WEBブラウザはHTMLファイルを受け取ると、DOMをつくります。DOMを直接書き換えるとブラウザが再度ページを読み込みDOMを作るなど時間がかかってしまいます。
Virtual DOM
Reactはメモリ上にVirtual DOMを作成します。
Reactは必要に応じてブラウザDOMを更新するのにバーチャルDOMを使用します。
これによりWEBアプリケーションの処理を早く柔軟にすることができます。
Reconciliation
Reactは現在のバーチャルDOMと以前のバーチャルDOMが一致しているかを確認します。
変更が必要な場合は、ブラウザDOMを更新します。ブラウザDOMが更新されるとブラウザの表示が変わります。この動作をReconciliation(和解)といいます。
コンポーネント
すべてのReactアプリケーションは1つのコンポーネントを持っています。rootコンポーネントかappコンポーネントです。
コンポーネントはappコンポーネントに追加され、コンポーネントツリーを作ります。ページ全体を1つの大きなかたまりとして書くのではなく、ヘッダー・ボタン・リストといった小さな部品(コンポーネント)に分けて、それらを組み合わせて画面を作っていくイメージです。私が実際に触ってみて、この「部品に分けて組み立てる」考え方がReactの一番の肝だと感じました。
コンポーネントは関数として書くのが今の主流です。名前は大文字から始めるのがルールで、私は最初小文字で書いてしまって表示されず、少しハマりました。
function Hello() {
return <h1>こんにちは!</h1>;
}
JSX
上のコードで、JavaScriptの中にHTMLのようなタグを書いている部分がありました。これをJSXといいます。
JSXはHTMLそっくりですが、あくまでJavaScriptなので少しだけ違うところがあります。私がつまずいたのは次のあたりでした。
classではなくclassNameと書くreturnで返せる要素は1つだけ(複数並べるときは全体を1つのタグで囲むか、<>...</>で囲む)- タグの中では
{ }で囲むとJavaScriptの式を埋め込める
function Profile() {
const name = "びんせん";
return <p className="name">名前は{name}です</p>;
}
{name} の部分に変数の中身が入って表示されます。文字列だけでなく計算結果なども埋め込めるので、動的なページを作るのにとても便利でした。
props
コンポーネントは部品なので、使い回せると便利です。そこで、呼び出す側から値を渡す仕組みがpropsです。
propsは関数の引数のように受け取り、渡すときはHTMLの属性のように書きます。
function Greeting(props) {
return <h1>こんにちは、{props.name}さん!</h1>;
}
function App() {
return (
<div>
<Greeting name="太郎" />
<Greeting name="花子" />
</div>
);
}
同じ Greeting コンポーネントに、渡す name を変えるだけで別々の表示になります。1度作った部品を値違いで何度も使い回せるのがpropsの気持ちよさで、ここまで来ると「なるほど、これがReactか」と少し感覚がつかめてきました。
今回はここまでです。次回はコンポーネントの中で値を管理するstateについて触れていきたいと思います。
ぜひ参考にしてください!また!