在我的反应原生项目中使用 axios 显示对象给出未定义

Posted

技术标签:

【中文标题】在我的反应原生项目中使用 axios 显示对象给出未定义【英文标题】:Display object with axios in my react native project gives undefined 【发布时间】:2022-01-21 00:31:18 【问题描述】:

我试图从 phpMyAdmin 获取请求数据,然后将其输出到我的 react 本机项目中,我使用 response.data.username,但我得到了未定义。

const getInfo = () => 
  axios.get("https://luxrealest.com/includes/user_registration.php").then(
    (response) => 
      console.log(response.username);
      setDataInfo(response.data.username + " " + response.data.email);
    )

getInfo()
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.24.0/axios.min.js" integrity="sha512-u9akINsQsAkG9xjc1cnGF4zw5TFDwkxuc9vUp5dltDWYCSmyd0meygbvgXrlc/z7/o4a19Fb5V0OUE58J7dcyw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

预期

Object 
  "": Object 
    "email": "myke@myke.com",
    "id": "11",
    "username": "myke",
  ,
  "1": Object 
    "email": "aisosa.erharuyi11@gmail.com",
    "id": "12",
    "username": "General.Bigman",
  ,
  "2": Object 
    "email": "amiatorjay@gmail.com",
    "id": "13",
    "username": "Jaycee",
  ,

【问题讨论】:

我试图让你成为minimal reproducible example - 当我将 Axios 小写时出现 CORS 错误 @mplungjan,使用 Postman 我能够从该 URL 获得响应。在浏览器中,我也收到 CORS 错误。 Postman 不会给出 CORS 错误。您尝试访问的端点需要实现Access control allow origin 【参考方案1】:

鉴于数据的形状,您需要像这样迭代此对象:

 for (let key in response.data) 
     setDataInfo(response.data[key].username + " " + response.data[key].email);
 

这当然会为您的数据调用setDataInfo 3 次。如果您只需要特定用户,则需要添加额外的逻辑。

【讨论】:

请问这是什么逻辑,能不能给我举个例子,因为它没有打印出来 你可以尝试几件事: 1. 检查浏览器控制台是否有任何错误,如 cmets 中提到的 CORS。 2. 如果您收到响应,请在该循环中添加例如console.log(response.data[key].username),看看您是否获得了预期值。 3.还在axios调用中.then之后添加.catch并记录/显示错误,以便用户在获取数据时知道是否有任何问题。 好的...谢谢,我会注意的。

以上是关于在我的反应原生项目中使用 axios 显示对象给出未定义的主要内容,如果未能解决你的问题,请参考以下文章

.env 变量导致我的对象值出现错误,这些值是我从 axios get 请求中获取的反应

我可以在我的反应原生项目中使用引导模板吗

反应原生如何检查组件当前是不是显示在屏幕中

Axios.post 在反应 js 中不起作用

如何在点击时重新加载反应原生地图

Axios 以某种方式缓存我的获取用户请求本机反应