0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

新・日本一わかりやすいReact入門の学習ノート

Last updated at Posted at 2023-01-27

このページについて

youtubeの「新・日本一わかりやすいReact入門」を見た際の記録用のメモ。
新・日本一わかりやすいReact入門【基礎編】 - YouTube

#02 新・日本一わかりやすいReact入門【基礎編】JSXの記法 - YouTube

React.Fragmentとは、階層構造にするために空タグで囲むもの。

#03 新・日本一わかりやすいReact入門【基礎編】create-react-appで環境構築 - YouTube

create-react-appとは、babelや、webpackの設定をよしなにやってくれるコマンド。

#04 新・日本一わかりやすいReact入門【基礎編】コンポーネントとprops - YouTube

  • クラスコンポーネントはほとんど使われない。propsを呼び出すときはthisを使用する。
    昔は、クラスコンポーネントでしかstate,ライフサイクルを使用できなかったため、主に使われていた。
  • 関数コンポーネントを中心に学習すれば良い。React Hooksの登場により、クラスコンポーネントと同じことができるようになった。
    関数コンポーネントは、以下、どちらでも定義可能。
function 関数名
const 関数名

※react version 17以降は、import react from React の記述は不要。

#05 新・日本一わかりやすいReact入門【基礎編】コンポーネントのimportとexport - YouTube

JavaScript モジュール - JavaScript | MDN

  • default export
    defaultという名前でexportした上で、定義した名前で再定義している。
  • 名前付きexport
    reactではエントリポイントでよく使用する。
    エントリポイントでは、別名exportも併用して、名前が被らないようにしている。
  • 名前付きimport
    1ファイルから複数コンポーネント呼び出す。

#06 新・日本一わかりやすいReact入門【基礎編】コンポーネントの状態管理 - YouTube

const [現在の状態, 更新関数] = useState(初期値)

更新関数(新しい値)
  • stateをpropsとして渡すことが多い。
  • propsに関数を渡す際に、コールバック関数か、関数自体を渡す。
    渡す際に関数を実行しない。
    ✖️メソッド名() ← ()をつけると呼び出されたタイミングで実行される。

#07 新・日本一わかりやすいReact入門【基礎編】頻出するuseStateのケース3選 - YouTube

  • 引数を使って更新する
  • prevStateを活用する
    prevStateとは、更新前のstate
    Reactの公式の書き方として、prevStateを使用せずに、現在のstateに変更を加える書き方をしているがこの書き方はよくない。
    → 現在のstateが更新されるまでタイムラグがあるため。

#08 新・日本一わかりやすいReact入門【基礎編】ライフサイクルと副作用を理解しよう - YouTube

useEffectは、ライフサイクルに応じた処理を行いたい場合に使用する。
ライフサイクルとは、コンポーネントが生まれたから破棄されるまでの時間の流れ。

  • Mounting:コンポーネントが初回、画面にレンダリングされるまでの期間
    初期化 → レンダリング → マウント後の初回の処理(←useEffectはこのタイミングで走る)
  • Updating:コンポーネントが変更されるたびに発生する、変更される期間
    レンダリング → 更新後の処理
  • Unmounting:コンポーネントが破棄される期間
    アンマウント前の処理

副作用(effect)とは、レンダリングによって引き起こされる処理のこと。
レンダリングされるたびに呼び出したい処理をuseEffectに記載する。

useEffectの第二引数(dependencies)の書き方

  • 初回レンダリング後のみ実行したい場合:, deps: []
  • countが変更される度に実行したい場合:, deps: [count]

クリーンアップ
コンポーネント内で外部データベースを購読したい場合は、useEffect内で購読処理を呼び出す。
→必要無くなったらクリーンアップ関数を使って掃除する。
←購読しっぱなしだと、メモリリークにつながるため。

#09 新・日本一わかりやすいReact入門【基礎編】useEffect内でAPIを呼び出そう - YouTube

useEffectのユースケース
APIやデータベースから非同期通信でデータを取得する(fetch)ときは、useEffectの中で行う。
データをただ取得するときはget。
ネットワーク越しに通信してデータを取ってきて戻ってくる場合は、fetchという単語を使う。

  • 特定の値が変わったらデータを再取得(refetch)する。

  • useEffect内に記載することで初回レンダリングの度に実行される。
    第二引数を設定することで第二引数が変更する度に実行される。

※テンプレートリテラル
バッククオート内で、${}内は、javascriptを記述できる。

非同期処理の完了を待つ方法!Promise&async/await【分かりすぎて怖いJavaScript入門】 - YouTube

  • 非同期処理は、実行を待たない。
    メリット:ユーザーを待たせない。ユーザーに別の操作を許可する。
    デメリット:実行完了までデータが存在しないのでそこの制御が難しい。
    →非同期処理の実行完了を制御するにはどうしたらいい?
    Promiseを使用する。

  • 同期処理は、別タスクの実行完了を待つ。
    その間自分のタスクは中断する。

  • Promiseで完了を待つ方法
    pending:初期状態
    fullfilled:処理が成功して完了
    rejected:処理が失敗して完了

  • async/awaitで完了を待つ方法
    非同期処理を伴う関数を定義する際にasyncをつける。
    その関数の実行の際にawaitをつける。

俺のReactがこんなに遅いわけがない【React.memoでパフォーマンスチューニング】 - YouTube

  • propsに変更がない場合に、memo化したコンポーネントの再レンダリングをskipできる。

俺のReactがこんなに遅いわけがない【Hooksでパフォーマンスチューニング】 - YouTube

Reactのパフォーマンスチューニング方法

  • React.memoで、コンポーネントのメモ化
  • useMemo()で、変数のメモ化。重い計算を回避。
    ※重い計算を行わない場合は、使用しない(通常の変数宣言の方が高速なので)。
const ids = useMemo(() => {
}, [amount])  ←このamountの値が変化した場合だけ再計算が走る。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?