Learn_react
事始め いやね、何回もreactを勉強しなきゃな!と思いつつも、実際に始めると、結局はhtml + css + vanila jsでやってることの管理を容易にするだけのもの、っていう感が否めなくてね。しかもフレームワークだからブラックボックス化されてい持ち悪いしね。 始めるはいいものの、途中で投げ出してしまうことがもう3回くらいあった。 正直、vanilaでもよくね?と思っている節はある。 htmlでid属性を使って名前を付けて、class名をつけることで、bootstrapを使えば一瞬できれいになる。しかしだ。やはりreactが使われているにはそれなりの理由があるのだろう。 ということで、まじめにやってみることにした。 ホワイトボックス化 ってことでね、結局中で何が実行されているかがわかればええやんってことなんだよね。 最終的にブラウザに届くのはhtml + css + jsであることには変わりない。 これはブラウザ側でhtmlを見ればわかる。 index.htmlが呼ばれているんだよね。 で、index.htmlからは、/static/bundle.jsが読み出されている。この/static/bundle.js が唯一のjavascriptファイルになっている。 reactプロジェクトの方では/src/いかにいろいろなコンポーネントを入れることになると思うんだけど、ビルド時にbundle.jsにまとめ上げられるってことなんだよね。それをまずは理解しよう。 開発 ー> ビルド ー> 一つのスタティックファイルができるって話。そうだそうだ。 /src以下の話 /srcいかにはいろいろなコンポーネントが入っているって話をしたけど、親玉がいるって話なんよ。それが、index.jsな。こいつがすべてのコンポーネントの生みの親ってこと。 親玉の中身を見てみよう。 import React from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals'; const root = ReactDOM.createRoot(document.getElementById('root')); root.render( <React.StrictMode> <App /> </React.StrictMode> ); うん。document.getElementByIdでidがrootのやつを召喚している。index.htmlには確かにrootというidを持つタグがいる。 で、ReactDOMってやつにコピーしているのか?わからんが。で、root.renderで何かを作っているな。で呼び出しているぞ。。なるほど。ここに次々にコンポーネントを追加していく感じだな。なるほど。ちなみに、root.render()に渡すのが import React from ‘react’; import ReactDOM from ‘react-dom/client’; import ‘./index.css’; import App from ‘./App’; import reportWebVitals from ‘./reportWebVitals’; ...