React Hook "useAspidaCaller"는 REST API를 안전하게 호출하고 상태를 관리합니다.
16488 단어 ReactTypeScriptaspidahookstech
useAspidaCaller
라는 React Hooks 라이브러리가 작성되었습니다.대상 사용자는 aspida를 사용하여 REST API를 안전하게 실행하고 React를 사용합니다.
설치하다.
npm i use-aspida-caller
yarn add use-aspida-caller
※ 최초 명칭@texmeijin/use-aspida-caller
이었으나 지금은 더 간단해졌습니다.특징①로드나 오류 등 API 호출과 관련된 상태를 관리할 수 있음
useAspidaCaller
를 사용하면 POST와 PUT 등 업데이트 시스템의 API를 안전하게 두드릴 수 있을 뿐만 아니라 로드와 오류 등 상태 관리도 선언적으로 가능하다.샘플 코드
const Sample = () => {
const {
put,
isPutting,
isPutSuccessful,
putError,
} = useAspidaCaller(client.people._id(1));
const handlePutClick = async () => {
await put({ body: { name: "hoge" } }).catch((err) => null);
};
return (
<Form>
<Button isLoading={isPutting} onClick={handlePutClick}>Put Value</Button>
{
putError && <ErrorMessage>{putError.message}</ErrorMessage>
}
{
isPutSuccessful && <SuccessMessage>送信に成功しました</SuccessMessage>
}
</Form>
);
};
aspida가 정의한 API 대상을 useAspidaCaller
로 전달하면 호출 방법과 불러오기, 성공 표시와 오류 대상이 되돌아옵니다.각종 태그와 오류 대상의 내용은 호출 방법의 실행에 따라 달라집니다.예를 들어 Submit 포맷에서 요청을 제출하기 위해 각자
useState
상태에서 불러오기와 오류를 관리하는 상황에서 코드는 더욱 선언적이고 간단할 수 있다.특징 ② aspida를 사용하여 요구와 응답이 안전해진다
전절의 특징만 있다면react-use의useAsyncFn 등 특징은 변하지 않는다.
그러나 본 프로그램 라이브러리의 특별한 점은
aspida
의 사용이 요구와 응답을 더욱 안전하게 하는 데 있다.API에서 aspida 쌍
/people/{id}
을 사용하여 PUT 요청을 정의하는 경우export type Methods = {
put: {
reqBody: {
name: string;
};
resBody: {
status: number;
};
};
};
useAspidaCaller
에서 되돌아오기put
방법은 지정한 요청 주체의 유형에 따라 호출되지 않으면 유형 오류가 발생합니다. const handlePutClick = async () => {
// ↓ここがname以外のキー名だったり、string以外を渡しているとエラーとなる
await put({ body: { name: "hoge" } }).catch((err) => null);
};
③ aspida가 정의한 HTTP 동작에 따라 반환 값이 다릅니다.
앞의 예에서put방법을 정의했기 때문에
useAspidaCaller
의 반환값도put
와 관련된 변수이다. const {
put,
isPutting,
isPutSuccessful,
putError,
} = useAspidaCaller(client.people._id(1));
그러나 HTTP 동작은 같은 종점에 PUT를 정의할 수 있을 뿐만 아니라 POST, DELETE, GET 등도 정의할 수 있다.따라서 원시 API 정의에서 POST가 정의되면
useAspidaCaller
의 반환값도 post
과 관련된 변수로 되돌아온다.export type Methods = {
post: {
reqBody: {
name: string;
};
resBody: {
status: number;
};
};
};
원래 API 정의에서 POST, PUT, DELETE를 정의할 때useAspidaCaller
의 반환 값은 해당하는 모든 반환 값을 반환합니다. const {
post,
isPosting,
isPostSuccessful,
postError,
} = useAspidaCaller(client.people._id(1));
export type Methods = {
post: {
reqBody: {
name: string;
};
resBody: {
status: number;
};
};
put: {
reqBody: {
name: string;
};
resBody: {
status: number;
};
};
delete: {
reqBody: {};
resBody: {
status: number;
};
};
};
예를 들어 원래 API 정의에 PUT가 없으면 put
나 isPutting
등을 사용할 수 없으며 사용하더라도 유형 오류가 발생할 수 있다.방법의 해설
해당 HTTP 작업
GET/POST/PUT/DELETE/PATCH를 지원합니다.
반환 값에 대한 설명
put
를 예로 들어 설명하다.키 이름
컨텐트
put
PUT 요청을
useAspidaCaller
에 전달된 엔드포인트로 보냅니다.매개변수는 유형 정의와 같습니다.isPutting
put
실행 방법 기간true
.따라서 초기 값은 false
입니다.isPutSuccessful
put
방법을 실행하면 한 번이라도 성공true
.초기 값은 false
입니다.putError
put
실행 방법 실패를 알면 오류 내용을 입력합니다.초기값undefined
또한 DELETE 메서드에서만 실행 메서드가 deleteApi
이름으로 반환됩니다.세부 동작
테스트 코드를 읽으면 상세한 행동을 알 수 있다.
https://github.com/TeXmeijin/use-sender-aspida-hooks/blob/2273ca9a4bdf965e2c02bbd2f1b62f1a7bf4f5fa/src/tests/useAspidaCaller.spec.ts
Reference
이 문제에 관하여(React Hook "useAspidaCaller"는 REST API를 안전하게 호출하고 상태를 관리합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/meijin/articles/recommend-aspida-react-hooks텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)