朝活129日目 やっとAPIが叩ける

さてさてさーて、今日もやっていくー

まずはなんでホットリロードが効くようになったのかを検証

最初に書いたのはdocker-compose使ってるので、docker-compose.ymlに下記内容を追記した。

      - CHOKIDAR_USEPOLLING=true
      - CHOKIDAR_INTERVAL=1000

これではダメで、package.jsonに下記を追記したら動くようになったぽい

"scripts": {
    "start": "WATCHPACK_POLLING=true react-scripts start",

めでたしめでたし!
これで開発がストレスフリーでできるー

んじゃま、まずは単純にAPI叩くところからやっていきますかねー


と、意気込んでやっていたのですが、MUIで導入したテンプレートにjsファイルとtsxファイルが混在していました。
内容は一緒っぽいのに、内容を削除するとエラーが出てきて、なんやねん!
jsファイルの変更は反映されるけどtsxの内容は反映されない。。。

あれやこれや調べたりしても分からず。。。
ChatGPTはファイル消せって言ってるけど、内容消したらエラー出るのに。。。
っと思いながらも削除してみたら、普通にtsxで動き出しましたw

ChatGPT、、、疑ってごめんよ!

今度こそ開発開始だ!!


src/components/dashboard/Orders.tsx がレンダリングされた時に特定のAPIを叩いてjson形式の値を取得したいです。 できればAPIを叩く処理を分けたいので、処理を新しいファイルに書く、ファイルの名前を考える、ファイルを置くディレクトリを教えてください。

ChatGPT

APIを叩く処理を分けて管理することは、コードの再利用性とメンテナンス性を向上させます。このための一般的なアプローチは、サービス層またはAPIユーティリティ層を作成することです。

  1. ファイルの名前:
    APIに関する関数を集めたファイルの名前は、その関数が何をするかに基づいて命名します。例えば、注文に関連するAPIを叩く関数がある場合、ファイル名を `ordersService.js` や `ordersApi.js` などとすることができます。

  2. ファイルを置くディレクトリ:
    API関連のコードを格納するために、プロジェクトの `src` ディレクトリ内に `services` または `api` という名前のディレクトリを作成するのが一般的です。これにより、API呼び出しを行う関数やサービスを一元管理できます。

  3. 処理を書く新しいファイルの作成:
    注文情報を取得するためのAPI呼び出しを行う新しいTypeScriptファイルを `src/services` に作成します。以下はそのファイルの基本的な構造です:

// src/services/ordersApi.ts

const API_URL = 'https://example.com/api';

export const fetchOrders = async () => {
  try {
    const response = await fetch(`${API_URL}/orders`);
    if (!response.ok) {
      throw new Error('Network response was not ok');
    }
    return await response.json();
  } catch (error) {
    // Error handling
    console.error('There was a problem with the fetch operation:', error);
    throw error;
  }
};
  1. コンポーネント内での使用:
    次に、`Orders.tsx` コンポーネント内でこの新しいAPI関数を使用します。Reactの `useEffect` フックを使って、コンポーネントがマウントされたときにデータを取得することができます:

// src/components/dashboard/Orders.tsx

import React, { useEffect, useState } from 'react';
import { fetchOrders } from '../../services/ordersApi';

const Orders = () => {
  const [orders, setOrders] = useState([]);

  useEffect(() => {
    const getOrders = async () => {
      try {
        const ordersData = await fetchOrders();
        setOrders(ordersData);
      } catch (error) {
        // Error handling
        console.error(error);
      }
    };

    getOrders();
  }, []);

  return (
    // JSX to display orders...
  );
};

export default Orders;

このように、API呼び出しを行うコードを分離して、コンポーネントからはそれを単純に利用するだけにしておくと、将来的な変更や他のコンポーネントでの再利用が容易になります。また、APIのエンドポイントや呼び出し方式が変更された場合にも、コンポーネントのコードを変更することなく、`ordersApi.ts` ファイルだけを更新することで対応できるようになります。


やっとAPI叩くところまで辿り着いて今日は終了しますー


見た目だけ少しいじる。

準備して出社ー



この記事が気に入ったらサポートをしてみませんか?