Bluemo's Brain

Search

Search IconIcon to open search

React入門チュートリアル

Last updated Unknown Edit Source

    React入門チュートリアル (1) Reactとは何か | Hypertext Candy

    • 仮想DOM

    • コンポーネント指向

    • CodePen、テストに良いな

      • 使い方も説明されてる
    • ReactDOMJSXも普通にjavascriptファイルとしてインポートできるのね

      • JSXとかどういう仕組みで成り立ってるんだろう
        • Javascript文法ガン無視の記述をどういう仕組みで成り立たせてるんだろう
      • JSXという文法で成り立ってると考えればおkだと思うtakker.icon
        • TypeScriptやCoffeeScriptとおなじ
        • transpileすると生のJSに戻る
          • <div>...</div>React.createElement("div", null, ...)みたいなのになる
        • なるほどblu3mo.icon
    • JSXでループとか書いて複数生成する場合は、各要素の独自性を示すためのkeyが必要

      • 処理最適化のためにあった方が良いぞ、と
    • Reactコンポーネントは、React要素を返す関数として作る

      • 入出力はcreateElementと同じような感じ
      • それをJSXがうまいこと繋いでくれる、と
    • Reactを使わないDOM操作より宣言的にかけるのが嬉しいポイント

    • JSXで と書く場合、

      • Xのfunctionの中でchildrenプロパティを拾って返さないと、Yはrenderされない
        • なるほどblu3mo.icon
      • React.Fragmentとか、HTMLに元からあるタグの仮想DOMとかには、これが元から実装されてる感じかな
    • 今のところの感想として、JSX気持ち悪〜〜という気持ちblu3mo.icon

      • まあ慣れでしかないんだろうけど、xmlとjavascriptが入り混じるのがすごい読みづらい
      • なんか名詞と動詞が入り混じってるみたいな?
      • とりあえず、
        • html風の何かはどこに書いても良い
        • html風の何かの中にjsを書く場合は{}
        • みたいな、htmlの方が強く効く(?)イメージをもつの大事そう
      • {}の中身は最終的にオブジェクトって意識大事だな
        • \text${object}text``の亜種だと考えるとしっくり来るかもしれないtakker.icon
          • これも{}の中が常に(object|premitive)

    jsx

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    const element = (
      <ul>
        {members.map(member => (
          <li key={member.name}>
            {member.name} plays {member.instrument}
          </li>
        ))}
      </ul>
    );
    
    • いまいちこれがわからん
      • mapでmembersの各要素についてcreateElement(“li”, ~~)をしてるけど、それがどうulのchildになる?
        • mapだからchildの配列が生成されるんか、なるほど

    React入門チュートリアル (3) 属性と状態 | Hypertext Candy

    • classではなくclassNameなのは、classがjsの予約後だから
    • 本質的には、フックが実行される回数は、レンダリングごとに同一でなければならないということです。

    • なぜなら、React は内部で、呼び出し順によって state の値を管理しているからです。

      • 結構危うい仕組みなんだなw
      • まあ結局のところ、魔法とか別レイヤーのシステムじゃなくてjavascriptの関数でしかないからまあそうなるか

    React入門チュートリアル (4) フォームとイベントハンドリング | Hypertext Candy

    React入門チュートリアル (5) ToDoアプリを作ってみよう | Hypertext Candy

    • Swiftに慣れてると、やっぱ型が厳密じゃないの気持ちわり〜という気持ちになる
      • 早くTypeScriptに移行したい
      • 関数の引数が曖昧なまま関数を受け渡しできるのが一番気持ち悪い
    • あとEnumないの不便 jsx
    1
    2
    3
    4
    5
    6
    
    // ❌ この書き方だと、関数を渡すのではなく実行してしまう
    <Comp onSomething={doSomething(123)} />
    // ✅ アロー関数でも OK
    <Comp onSomething={() => doSomething(123)} />
    // ✅ bind を使う
    <Comp onSomething={doSomething.bind(null, 123)} />
    

    Reactの開発環境

    本連載は「入門」チュートリアルと銘打ちましたが、基礎の理解が何よりも重要です。実際、React ライブラリそのものに関しては、さらに学ぶべき内容はほとんどありません。本文でも触れましたが、Router や Redux などの周辺技術の知識や、何よりも、JavaScript の言語仕様への理解があれば、本格的な開発を始めることができるでしょう。

    自分がReact学んだときとおんなじやつだtakker.icon

    • かなりわかりやすいチュートリアルだった覚えがある
    • React学習で知りました、ありがとうございます🙇‍♂️blu3mo.icon
      • よかったですtakker.icon
      • そしてすでにおすすめしていたことを完全に忘れてた()