Open1

【axios】SuspenseとErrorBoundaryでAPIの非同期エラーのUIを表示させる設定?

TakeTake

React で SuspenseとErrorBoundaryでAPIの非同期エラーのUIを表示させたい場合、
APIのpromiseのrejectでthrowを投げると実現できるよう。
(promiseのラッパー処理が必要)
https://qiita.com/uhyo/items/255760315ca61544fe33
https://codesandbox.io/s/sad-thompson-rwqe1u?file=/src/index.js:653-661
axiosの場合はrejectでthrowを投げる処理がまとめて設定できそう。。。
参照サイト
https://www.hypertextcandy.com/react-error-handling

// Axios インスタンス
const client = axios.create();

// 成功の場合は何もしない
const onSuccess = response => response;

// エラーの場合はthrow new Error
const onError = err => {
  // 関数や Promise オブジェクトなど、JSON にシリアライズできない値はエラーになる
  // 必要なキーのみ取り出してnew Errorに文字列化して渡す
  // 受け取り側でJSON.parseする
  const { status, data } = err.response;
    const response = JSON.stringify( { status, data });
    throw new Error(`${response}`);
};

client.interceptors.response.use(onSuccess, onError);