Рубрики
Без рубрики

Создание простого React Cloope API Call с помощью TypeyScript

API React Hook API с Teadercript

Автор оригинала: Jesse Langford.

Недавно я начал строить свои собственные крючки в реакции, и я хотел поделиться тем, который нашел особенно полезным.

Создание вызовов API – это то, что я делаю часто, поэтому один из первых крючков, которые я отправил, был простым крюком, который делает вызов API, возвращает данные или сообщение об ошибке, если что-то пойдет не так.

Вот полный файл крючка, я проведем остальную часть статьи, проходящей через нее, сложным.

import { useState } from "react"

import { getUser } from "../api/api"

interface User {
  name: string;
  email: string;
  age: number;
}

export default (): [(id: string) => void, User, string] => {
  const [user, setUser] = useState({ name: "", email: "", age: 0 });
  const [errorMsg, setErrorMsg] = useState("");

  const getUserTest = async (id: string) => {
    try {
      const user = await getUser(`/user/${id}`);
      setUser(user);
      setErrorMsg("");
    } catch (error) {
      setErrorMsg(error);
    }
  };

  return [getUserTest, user, errorMsg];
};

Первая строка крюка является одним из самых важных

export default (): [(id: string) => void, User, string] =>

[(ID: String) => Void, пользователь, строка] Указывает все типы возврата, которые обеспечивает крючок. Thmyscript Wont поживает, если вы не предоставите это, но без него нет типов возврата, будет неверно истолкован, и вы не сможете вызвать крючок .so Обязательно уточните ваши типы возврата для функций.

Вторая часть указывает данные, которые мы хотим вернуться.

const [user, setUser] = useState({ name: "", email: "", age: 0 });
const [errorMsg, setErrorMsg] = useState("");

В-третьих, у нас есть простая асинхронная функция, чтобы пойти и получить наш пользователь.

const getUserTest = async (id: string) => {
    try {
      const user = await getUser(`/user/${id}`);
      setUser(user);
      setErrorMsg("");
    } catch (error) {
      setErrorMsg(error.message);
    }
  };

Наконец, у нас есть наш массив предметов, которые мы хотим вернуться. Обратите внимание, как каждое значение слева направо соответствует типам возврата в первом разделе.

return [getUserTest, user, errorMsg];

И это все, что есть к этому. Теперь вы можете импортировать крючок и называть это.

import * as React from "react";
import "./styles.css";
import useTest from "./hook";

export default function App() {
  const [getUser, user, errorMessage] = useTest();
  return (
    

Simple API Hook Demo

{user.name}
{user.email}
{user.age}
{errorMessage}
); }

Вы можете найти ссылку на демонстрацию Sandbox здесь

Это довольно простой пример, в моей следующей статье я покажу, чтобы сделать этот крюк Generic, чтобы вы могли использовать его для нескольких вызовов API.