React学習メモ – 基礎から実践まで(TypeScript + Vite)

React学習時に、最初に知っておくべきことを効率よく学べる操作メモ。

Reactインストール

Node.jsをいれておく。

*古すぎると警告がでるので、新しいものと切り替えられるようにする。

TypeScriptとViteと一緒にいれるなら、下記コード。

Vite起動後、ブラウザでプロジェクト確認できる。

レベル①カウンタを作成(基本構造+useState)

ひとつずつ手順解説

Counterコンポーネント作成(コンポーネント)

プロジェクトを開き、srcの中に、Counter.tsxを作成。ここに次のコードをいれておく。

src/Counter.tsx

「Counter」というコンポーネントを作成し、これを外部でも使用できるようにした。今は単に「test」と表示されるだけ。

次に、App.tsxにこの「Counter」を埋め込む。

src/App.tsx

ブラウザではトップ画面に「test」とでるはず。

カウンタ設置(useState)

Counter.tsxにカウンタ用のコード追加

src/Counter.tsx

useStateをつかうと、「状態」を操作できる。今回は「num」変数と、このnumをの状態を操作する「setNum」関数を定義した。

その後、onClickの中に、increaseNumber関数をセット。関数のなかでは、setNum(num+1)としている。これによって、ボタンをクリックすると、numの状態がかわる。num+1となるが、この状態がsetNum関数によってセットされる。

このuseStateはかなり重要。

レベル②入力用フォーム作成(入力した値を受け取る)

src/InputText.tsxを作成。コードをいれる。

src/InputText.tsx

今回はテキスト入力欄を作り、そのなかに、onChangeをセット。ユーザーがテキストをいれると、addNewText関数が実行される。

そこで、「e」と引数があるが、これが、入力欄に入力されたテキストのイベントとなる。このeの値が、「e.target.value」となる。setText(e.target.value)によって、text変数に、入力値がセットされる。{text}とある部分に、この入力値が表示される。

なお、App.tsxに、カウンターの時と同様、このInputText.tsxを埋め込んでおく。

src/App.tsx

レベル③配列表示と削除機能(map, filter)

src/ArrayDisplay.tsxを作成。コードをいれる。App.tsxに、カウンターの時と同様、このArrayDisplay.tsxを埋め込んでおく。

リストをひとつずつ表示(map)

src/ArrayDisplay.tsx

今回は配列をつくり、itemsにいれておく。これを、map関数を使って一つずつ取り出す。

リストからアイテムを削除

各アイテムの横に「削除」ボタンを設置して、ボタンをおすと、アイテムが非表示になるようにする。

src/ArrayDisplay.tsx

もし onClick={deleteItem(index)} と書くと、コンポーネントがレンダリングされる度に関数が実行されてしまう。onClick={() => deleteItem(index)} とすることで、クリック時のみ実行される。
なおitems配列にはuseStateを設定しておく。
削除ボタンクリック時には、配列のindexをもっていく。
deleteItem関数では、filter関数を使って、indexをもとに、items配列から該当のアイテムを除外する。最後にsetItems関数を使って、削除済みアイテムを反映したアイテムをセット。

行っておいた方がよいこと

最後にnpm run devをとめて、npm run buildを実行する。これをGitHubにプッシュ→nestifyなどを使ってすぐに公開可能。

ただ、このままだとnpm run build時にエラーになる。エラー修正と、さらにコードをよくするために下記を行う。

TypeScript型指定

型の指定を行う。今回は、引数の型を下記のとおり2か所修正する必要がある。

deleteItem関数(引数の型の指定)

indexは数字なので、下記のようにする。

src/ArrayDisplay.tsx

    const deleteItem = (index:number) => {

addNewTex関数(入力値eventの型指定)

src/InputText.tsx
    const addNewText = (e: React.ChangeEvent<HTMLInputElement>)  => {
        setText(e.target.value);
    };

配列の型指定

配列が文字列の場合。

const [items, setItems]  = useState<string[]>([“Apple”, “Banana”, “Cherry”, “Date”]);

KeyはIndexだけでは危険

並び順が変わる機能が搭載されている場合は、indexだけを元にするのは危険。下記のようにitemとindexを組み合わせる手もあり。
                <div key={${item}-${index}}>
                    {item}
                    <button onClick={()=>deleteItem(index)}>削除</button>
                </div>

さいごに課題

ここまでで初級クリア。この先は、下記も知っておいた方が良い。

  • Props:変数の受け渡し
  • useEffect : 副作用の管理
  • 変数の共有:Context APIやRecoilなど
  • Router: 複数ページがある時に必要。
  • カスタムフック:自分で関数をつくる
  • useCallback:関数の最適化(無駄な再生成を防ぐ)
  • API通信:フェッチやAxiosを使用。サーバーサイド連携時に必要
  • useMemo: 計算結果のメモ化
  • useRef: DOM要素への直接アクセス
  • エラーハンドリング

【課題】

現時点までで、次のようなものを作ると練習になる

入力した値を変数「fruits」に追加していく。「追加」ボタンで、一覧に果物が追加されていく。

一覧の右側には削除ボタンがあり、クリックすると、削除となる。

 

 

 

 

 

 

 

 

 

 

 

 

React

お問い合わせ

お問い合わせフォームへ

・生成AIを活用した内製化支援
・Laravel研修・Webアプリ開発
のご相談承ります

サービス紹介・お問い合わせ

お仕事のご相談・お問い合わせ窓口

お問い合わせフォームへ

こちらよりお気軽にお問い合わせください。 ご挨拶&サービスご紹介動画ございます。

サービス紹介&お問い合わせ

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新版テキストに加え、Laravel8版~Laravel11版もご用意しています♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

最新版テキストに加え、Laravel8版からLaravel11版もご用意しています♪

Laravelの本を書きました。


ひつじが目印♪

Laravelの使い方を分かりやすく解説した書籍を出版しました。 ご好評につき、最新版に対応した改訂版を2025年7月に発売
書店やAmazon等のオンラインショップにて販売中です。 詳しくは下記ボタンをクリック

書籍の詳細を見てみる

Laravelの本書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravelの使い方を分かりやすく解説した書籍を出版しました。ご好評につき最新版対応の改訂版発売。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる
Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました