当前位置: 首页 > 知识库问答 >
问题:

如何有效地从URL获取数据并使用reactjs读取它?

刘博文
2023-03-14

我有一些带有json的URL,需要读取数据。在本例中,json如下所示:

{
   "results": [
        ...
     ],

   "info": {
        ...
     }
}

我想将获取的数据作为组件的属性返回。最好的方法是什么?我试着用axios做到这一点。我设法获取数据,但在render()方法中设置state之后,我收到了一个空对象。以下是代码

export default class MainPage extends React.Component {

constructor(props: any) {
   super(props);
   this.state = {
       list: {},
       };
   }

   public componentWillMount() {
       axios.get(someURL)
       .then( (response) => {
           this.setState({list: response.data});
           })
       .catch( (error) => {
           console.log("FAILED", error);
        });
     }

   public render(): JSX.Element {

     const {list}: any = this.state;
     const data: IScheduler = list;

     console.log(data); // empty state object

     return (
        <div className="main-page-container">
           <MyTable data={data}/>  // cannot return data
        </div>
     );
   }
}

我不知道为什么在render()方法中数据消失了。如果我把

console.log(response.data);

在。然后部分,我获得状态为200的数据。

所以我现在问是否有其他方法可以做到这一点。我将感谢任何帮助。

----更新----在此之后,我在MyTable组件中发现一个错误:

const flightIndex: number 
= data.results.findIndex((f) => f.name === result);

错误是:

Uncaught TypeError: Cannot read property 'findIndex' of undefined

这里怎么了?如何判断这不是财产?

共有2个答案

上官自明
2023-03-14

在React中,在您将ajax结果存储在组件的状态(您似乎正在这样做)后,您可以通过调用this.state.list检索该结果

因此,为了确保它正常工作,请尝试

https://daveceddia.com/ajax-requests-in-react/

陶飞英
2023-03-14

返回请求之前,React将尝试呈现组件。然后,一旦请求完成并返回数据,react将在setState调用后重新呈现组件。

问题是您的代码没有考虑空/未定义的数据对象。只需添加一个检查,即。

if (data && data.results) {
    data.results.findIndex(...);
} else {
    // display some loading message
}
 类似资料:
  • 问题内容: 我正在尝试将数据从一页传递到另一页。 www.mints.com?name=某物 如何使用JavaScript 阅读? 问题答案: 下面的a代码可以工作,并且在不可用的情况下仍然有用,但是它是在JavaScript中没有本机解决方案的时候编写的。在现代浏览器或Node.js中,更喜欢使用内置功能。 用法如下: 它返回一个像这样的对象: 所以 给

  • 问题内容: 在JSP中,如何从URL获取参数? 例如,我有一个www.somesite.com/Transaction_List.jsp?accountID=5 要获取的 URL5 。 是否有request.getAttribute(“ accountID”)之类的会话或类似内容? 问题答案: 在GET请求中,请求参数取自查询字符串(URL上问号后面的数据)。例如,URL http://hostn

  • 我正在创建一个fetchBill函数。分配https://randomapi.com/api/006b08a801d82d0c9824dcfdfdfa3b3c到一个api变量。它使用浏览器的fetch函数向api发出HTTP请求。它在一个函数中使用箭头函数。然后调用fetch函数,并在将其转换为JSON后返回响应。使用另一个。然后调用第一个函数,该函数将JSON数据传递给displayCartTo

  • 我需要拍摄一个div的屏幕截图,并需要将其发送到服务器(Java)进行存储。我公司项目中的现有代码使用Html2Canvas。js获取元素的位置(div,body…)返回base64数据URI,它工作正常,但在Chrome中冻结了应用程序。因此,我正在寻找其他解决方案,并从堆栈溢出中找到以下代码。 在这里,我得到的网址是Blob-Url(blob:https://fiddle.jshell.net

  • 我试图获取一系列api数据。根据下面的api数据,每个系列都有自己的数据,例如,一系列“bannerData”有自己的数据id,banner_title...下一个系列“home ecatData”有自己的数据,比如id,category_title...等等 在我的例子中,endpointapi是http://localhost:8000/api/homepage/ 如何在reactjs中获取这

  • 我需要从Excel表中读取数据,并需要将数据转换为键值对。 我已经写了下面的代码。 这是我的代码: 我得到的结果如下: 然而,我需要的输出,所有的头列应该来在映射键和相应的数据应该作为值。 我需要将我的数据设置为如下格式,请帮助<代码>地图