LoginSignup
0
0

More than 1 year has passed since last update.

React18入門 備忘録

Last updated at Posted at 2022-11-06

概要

新しいプロダクトを開発するにあたり、React+TyeScript+Next.jsを使用してみようと思いましたが、
そもそもどれ1つ触ったことが無い(JavaScriptは多少)ので、
まずはReact(version 18)を学習している(現在進行系)備忘録になります。

環境

・macOS Monterey v12.6
・React v18.2
・node.js v18.12.1
・VisualStuioCode

用語説明

Node.js

Node.jsはブラウザ上でしか動作しなかったJavaScriptを、サーバーサイドやブラウザ以外の場所で動作させることができるJavaScriptエンジン(実行環境)です。
このエンジンは、基本機能を実装するいくつかのコアモジュールが付属しています。
また、「Babel」を動かすための環境の役割も担います。

npm(Node Package Manager)

npmはJavaScriprtのパッケージ管理ツールであり、Node.jsに含まれています。

Babel

JSX構文はブラウザがそのまま読み取れないため、「Babel」を使用してJavaScriptに変換する必要があります。
Babelとは、ある構文のJavaScripを別の構文のJavaScriptに変換するツール(トランスパイラ)で、過去のバージョンのJavaScriptを担保してくれます。
例えば、分割代入等ES2015以降で登場した構文を古いブラウザで動作できるようES5用のコードに変換してくれます。

webpack

webpackは、複数のJavaScriptファイル等をまとめるツール(モジュールバンドラ)です。
ファイルとまとめることにより、パフォーマンス向上(ページの読み込み速度向上等)が期待できます。
「モジュール」とは、webpackによりまとめられたファイルのことで、JSXをはじめ、JavaScript、CSS等があります。
「Babel」にはECMAScriptModules(import/export)のJavaScriptファイルをまとめる機能はありませんので、「webpack」と「Babel」を組み合わせて利用するのが一般的です。

Reactでは、「webpack」が複数のJSXファイルを1つのファイルにまとめてくれ、さらにその過程で「Babel
」を通すことでJSXをJavaScriptに変換してくれます。

その他にも、「webpack」は、SassからCSSへのコンパイルや、画像の圧縮、ESlint等、ユースケースに応じたフロントエンド開発環境を構築してくれます。

Create React App

Reactの開発環境をコマンド1つで構築してくれます。
React開発環境構築にはNode.js、Babel、webpackが必要ですが、
Create React Appは、Babelとwebpackを内部で利用しているので、これらについて意識せず開発環境の構築ができます。

$ npx create-react-app my-app
$ cd my-app
$ npm start

VSCodeについて

おすすめ拡張機能

環境構築

・参考サイト
https://qiita.com/kuriya/items/36ae29366df0b7c95dec

・前提条件
homebrewインストール済

・Node.jsのバージョン管理
Node.jsをそのままPCにインストールするとバージョン管理が煩雑になります。
そのため、Node.jsのバージョン管理用のためにnodebrewをインストールします。
nodebrewをインストールするためには、homebrewをインストールしておく必要があります。
→つまり、homebrew→nodebrew→Node.jsの順番にインストールします。

// nodebrewをインストール
$ brew install nodebrew

// フォルダ生成(必要であれば)
$ nodebrew setup

// 最新の安定版をインストール
$ nodebrew install-binary stable

// インストール済node.jsバージョン確認
$ node -V

## 補足
// インストール済バージョン一覧
$ nodebrew ls

// インストール可能バージョン一覧確認
$ nodebrew ls-remote

// バージョンを指定しインストール
$ nodebrew install-binary [version]

// バージョンを指定して削除
$ nodebrew uninstall [version]

// 使用するnode.jsのバージョンを切り替え
$ nodebrew use [version]

ReactHooks

名称 説明
useState stateとstateを更新するための関数を定義できるため、関数コンポーネント内部でstate(状態)を管理できる。
useEffect 関数コンポーネント内で、副作用(DOMの書き換え、変数代入、API通信等)の追加、制御、副作用関数の実行タイミングをUI構築後まで遅延させる。
useMemo 関数の結果を保持するためのフックで、結果が同じ場合の値等を保存(メモ化)し、そこから値を取得する。
useCallback 関数自体をメモ化するフック。React.memoと組み合わせて利用する。
useRef 要素の参照を行うためのフック。コンポーネント内で値を保持することができる。
useContext Context機能をよりシンプルに使えるようになったフック。
親からpropsで渡されていなくても、Contextに収容されているデータによりシンプルにアクセスできる。
カスタムフック 関数名が「use」で始まる独自のフック。UIと切り離したロジックの抽出が可能で、ロジックごとに処理を切り分けることもできる。

useState

import React from 'react';
import ReactDOM from 'react-dom/client';

// 「いいね」表示を行うコンポーネント関数
const LikeButton = () => {
  // useState()でstateの管理
  // likedに、いいね前(false)かいいね済(true)どちらかの状態を持たせている
  const [liked, setLiked] = React.useState(false);

  // いいね前と、いいね済がトグルする関数toggleLikedを定義
  const toggleLiked = () => setLiked(!liked);

  return (
    // ボタンをクリックすると、trueとfalseがトグルする
    <button className='likeButton' onClick={toggleLiked}>
      {liked ? 'いいね済' : "いいね前"}
    </button>
  );
};

// domContainerを定義
const domContainer = document.getElementById('root');

// HTMLのDOMコンテナにレンダリング
const root = ReactDOM.createRoot(domContainer);
root.render(<LikeButton />);

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