Open4

React × TypeScript メモ

ゆゆゆゆゆゆ

type

axiosでとってきたデータに型指定する。

typeは;(セミコロン)で1つずつ区切る!

type TodoType = {
  "userId": number;
   "id": number;
  "title": string;
  "completed": boolean;
}
ゆゆゆゆゆゆ

取得データに型指定

.getのあと、<>で指定

取得データが配列になってたら<Array<>>で指定する

axios
    .get<TodoType>("https://jsonplaceholder.typicode.com/todos")
    .then((res) => {
     setTodos(res.data);
ゆゆゆゆゆゆ

useStateに型指定

useStateのあと、<>で指定。
想定してないuseStateの更新を防ぐ。

 const [todos, setTodos] = useState<Array<TodoType>>([""]);
ゆゆゆゆゆゆ

まとめ・取得したデータの表示

jsonplaceholderでデータの取得、表示

function App() {

  // useStateで配列(TodoType)を指定
  const [todos, setTodos] = useState<Array<TodoType>>([]);

  // ボタンがクリックされたらデータを取得する
  const onClickFetchData = () => {
    axios
      // 取得するデータの型は<Array<TodoType>>
      .get<Array<TodoType>>("https://jsonplaceholder.typicode.com/todos")
      // データをとってきたら行う処理
      .then((res) => {
      // resのなかのdataが必要なデータ、setTodosで更新
       setTodos(res.data);
     })
}
  return (
    <div className="App">
      {/* ボタンにクリックイベント */}
      <button onClick={onClickFetchData}>データ取得</button>

      {/* todoにtodosを格納する */}
        {todos.map((todo) =>(
          // titleとidを取得する。${}で変数の指定
          <p>{ `${todo.title}(ユーザー:${todo.id})`}</p>
        ))}


    </div>
  );
}


      {/* JavaScript でリストを変換する方法 */}
      {/* const numbers = [1, 2, 3, 4, 5];
      const doubled = numbers.map((number) => number * 2);
      console.log(doubled); */}

https://ja.reactjs.org/docs/getting-started.html

map() メソッドは、与えられた関数を配列のすべての要素に対して呼び出し、その結果からなる新しい配列を生成します。