0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Reactでらくらく非同期通信 SWRの紹介

Last updated at Posted at 2021-09-23

#SWRとは、

SWRとはReactのバックエンド通信を行うラッパーです。
Reactは通常fetchという関数を使ってバックエンドと通信をしますが、
通常の通信は、404エラーや認証エラー等、様々な要因で失敗します。

そこで、fetchによる通信に様々なエラー状況の対応をさせるために、
処理をカスタマイズ可能にするラッパーがSWRです

#SWRを使わない実装

App.js
import { useState } from 'react'

export default function App() {
// ステートを用意しておく
const [data setData] = useState("")

//APIのアドレスを定義しておく
const url = './v1/api/getUserData'

//アドレスにリクエストを送信する
  fetch(url)
    .then(res => res.json())
    .then(res => setData(res))

export default App;

これが正常に動けばいいのですが、
バックエンドサーバーがエラーを起こすと、dataステートにはundefinedが定義されてエラーになってしまいます。
そこで、SWRのお出番です

#SWRを使う実装

App.js
import useSWR from 'swr'

// フェッチ関数を定義
const fetcher = (url) => fetch(url)
  .then((res) => res.json());

// デフォルトコンポーネント
export default function Home() {

//APIのアドレスを定義しておく
const url = './v1/api/getUserData'

  const { data, error } = useSWR('./data.json', url )
export default App;

なんか、関数が一つ増えてわけわからんくなっただけじゃん、と思うかもしれませんが、
リクエスト処理リクエスト処理の実装を分けることで、
実際の本処理が少なくなり、更に、リクエスト処理にはエラー処理を分岐させることが出来ました。

バックエンド側の処理は、それぞれの環境によって違うと思うので、
このような、レスポンスによって、処理を分岐させるラッパーは役に立つと思います

いい感じにクールになりましたね(*'▽')

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?