为了账号安全,请及时绑定邮箱和手机立即绑定

无法捕获 axios React.js 中的错误

无法捕获 axios React.js 中的错误

牛魔王的故事 2024-01-18 16:04:57
我正在reactjs项目中使用axios进行API调用,但不知何故我无法捕获错误。我收到404但无法捕获它。有人可以告诉我出了什么问题吗?abc.jsexport default axios.create({  baseURL: `my_base_url`,  headers: {    "Content-Type": "application/json",  },});xyz.jsexport const createProcessApiCall = (param) => {  return API.post("/v1/process1", param);};zzz.js  const postData = async (param) => {    await createProcessApiCall(param)      .then((response) => {          setApiData(response.data.data);          setIsSuccess(response.data.isSuccess);          })      .catch((e) => {        setIsError(true);      });  };
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您正在将异步代码与同步代码相结合,请尝试使用 asyncchron :


   const postData = async (param) => {

    try {

       const result = await createProcessApiCall(param)

    }

    catch(err) {

         setIsError(true);

 

    }   

    };

或者同步:


const postData = (param) => {

    createProcessApiCall(param)

      .then((response) => {

          setApiData(response.data.data);

          setIsSuccess(response.data.isSuccess);    

      })

      .catch((e) => {

        setIsError(true);

      });

  };


查看完整回答
反对 回复 2024-01-18
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

axios.interceptors.response.use(res=>{return res}, (error) => {

 if (error.response.status !== 401) {

   throw error;

}


if (typeof error.response.data.error.name !== "undefined") {

   //do something on the error

}

});

最好使用 axios 拦截器来捕获错误


查看完整回答
反对 回复 2024-01-18
?
忽然笑

TA贡献1806条经验 获得超5个赞

任何与 200-299 之间包含的序列不同的状态代码,您都需要捕获:


  const postData = async (param) => {

    await createProcessApiCall(param)

      .then((response) => {

          setApiData(response.data.data);

          setIsSuccess(response.data.isSuccess);    

      })

      .catch((e) => {

        // @TODO parse err

        console.log(e.response);

        setIsError(true);

      });

  };


查看完整回答
反对 回复 2024-01-18
  • 3 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信