从我的axios访问数据时得到的响应不起作用

ut6juiuv  于 2023-02-12  发布在  iOS
关注(0)|答案(2)|浏览(138)

有人能指出我哪里出错了吗?我有一个简单的API获取请求。这从我的API获取数据很好

const GetMedicalPackages = async (props:IGetMedPack)=>{
    const token = props.token
   
    const data = axios({
        method:"get",
        responseType:"json",
        url : baseURL + "medicalPackage", 
        headers: { "Authorization": `Bearer ${token}`}
      })
      await data;
      return data.then((response:IMedicalPackageData| undefined)=>{
        return response
      })
 
}

这将返回类似Data from API的数据
现在,尝试使用此代码访问数据将返回,此代码始终返回和未定义

useEffect(() => {
    //async function fetchMyData() {
    GetMedicalPackages({ token }).then((response) => {
      if (response) {
        const options = response.data.map((row) => {
          console.log(row.MedicalInsurancePackage);
          return row.MedicalInsurancePackage;
          //console.log(row);
          //options.push(row.MedicalInsurancePackage);
        });
        //setMedPackage(options);
        console.log(options, response.data);
      }
    });

options values
我怀疑这与每行返回的对象有关,但我可能错了。有人能指出错误吗?谢谢
我尝试过foreach和各种技术,但一无所获。以获得字符串数组
为了清楚起见,问题不在于给我数据的axios调用。我可以很好地看到数据。但尝试使用返回的数据是问题所在。控制台日志显示了数据。但一旦我尝试Map它,我就得到了未定义。请参见图像控制台日志行给予我这个
活动程序包:真实医疗保险套餐:“标准”医疗保险套餐说明:“S标准”医疗保险包ID:1 原型:对象
但是控制台日志行.medicalInsurancePackage给予我未定义的

fslejnso

fslejnso1#

看起来你误解了Promise的工作原理。考虑一下:

const GetMedicalPackages = async (props) => {
  const token = props.token;

  return await axios({
    method: "get",
    responseType: "json",
    url : baseURL + "medicalPackage",
    headers: { Authorization: `Bearer ${token}` },
  });
};
kmynzznz

kmynzznz2#

你不应该await你的变量,而应该等待你的axios调用的结果,然后返回你从它那里得到的响应。

const data = await axios(...)
return data;

相关问题