Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Reactを極めよう

Sor4chi
August 13, 2023
93

 Reactを極めよう

Sor4chi

August 13, 2023
Tweet

Transcript

  1. JSX

  2. useEffect は useEffect(() => { 何かしたい処理 }, [ 状態]) という形で書きます。

    [ 状態] は 依存配列 と呼ばれ、ここに指定した状態が変化し たときに、 useEffect の中身が実行されます。 useEffect は、コンポーネントが描画されたとき + 依存配 列の状態が変化したときに実行されます。
  3. Reactに対応しているバンドラは、 webpack と Vite , Parcel , Snowpack などがあります。 最近のフロント界隈ではもっぱら

    Vite が使われています が、数年前までは webpack が主流でした。 最近は未だNext.jsが内部バンドラとして webpack を使って いたりするので、完全なリプレイスとはならなさそうです。
  4. CSS in JS CSS in JSは、JavaScriptのコードの中にCSSを書く方法で す。 Reactのコンポーネントの中にCSSを書くことができます。 パフォーマンスの観点からは、CSS in

    JSはあまり良くないと 言われていますが、その分スタイルをコンポーネントにコンポ ーズして提供できるため、柔軟性やメンテナンス性は高いで す。
  5. Zero runtime CSS in JS Zero runtime CSS in JSは、CSS

    in JSの一種です。 しかし、 Zero runtime という名前の通り、バンドラのプラグ インとして提供され、ビルド時にCSSを抽出して生成し、静的 ファイルとして提供することから、CSS in JSのパフォーマン ス問題を解決しつつ、CSS in JSのような柔軟性を保っていま す。
  6. はい、完全にpropsは何も渡してないですが、 John と表示さ れます。 createContext の引数には、デフォルトの値を渡すことが できます。 これがないともし親が UserContext.Provider を使ってい

    なかった場合に対応できなくなります。 そして、 UserContext.Provider の value には、コンテ キストの値を渡します。 すると、 useContext でコンテキストの値を参照することが できます。
  7. BrowserRouter は、React Routerのコンテキストを作成し ます。 Switch は、 Route の中から、一番最初にマッチしたもの だけを表示します。 Route

    は、 path にマッチした場合に、 children を表 示します。 こうすることで、擬似的に複数のページを持つことができまし た。
  8. memo は、コンポーネントをラップして、そのコンポーネン トの props が変更された場合にのみ再レンダリングするよう にします。 memo がないと、親のコンポーネントが再レンダリングされ た場合に、子のコンポーネントも再レンダリングされてしまい ます。

    高い位置にあるコンポーネントが再レンダリングされると、そ の下のコンポーネントも再レンダリングされるので、とても効 率が悪くなってしまうといったことが起こります。 それを防ぐために、 memo を使います。
  9. useCallback を使わないと、 onClick が変更されるたび に、 MyComponent が再レンダリングされてしまいます。 onClick はコールバック化されていない状態ですと、 MyComponent

    が再レンダリングされるたびに、新しい関数 が生成されてしまうのですが、 useCallback を使うこと で、関数をメモ化することができます。 useEffect と同じようにメモ化の依存配列があります。