访问函数中的fetch()数据[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了访问函数中的fetch()数据[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我正在尝试学习React并尝试为我的网站制作一个与公开Goog​​le日历相关联的日历。花了很长时间才弄清楚如何获取我需要的信息,但我管理了它。现在,我遇到了一个问题,它更加面向香草javascript ...

我的代码看起来像这样:

import React, { Component } from 'react';

export default class Calendar extends Component {
    async getEventNames() {
        try {
            await fetch('https://clients6.google.com/calendar/v3/calendars/b2f8g8daabnmpqo43v04s6fl3g@group.calendar.google.com/events?calendarId=b2f8g8daabnmpqo43v04s6fl3g%40group.calendar.google.com&singleEvents=true&timeZone=Europe%2FAmsterdam&maxAttendees=1&maxResults=250&sanitizehtml=false&timeMin=2019-04-01T00%3A00%3A00%2B02%3A00&timeMax=2019-05-06T00%3A00%3A00%2B02%3A00&key=AIzaSyBNlYH01_9Hc5S1J9vuFmu2nUqBZJNAXxs')
                .then(res => {
                    return res.json();
                })
                .then(data => {
                    const nameArr = data.items.map(item => {
                        return item.summary;
                    });
                    console.log(nameArr);
                    return nameArr;
                });
        } catch (err) {
            console.error(err);
        }
    }
    render() {
        const arr = this.getEventNames();
        console.log(arr);
        return <div />;
    }
}

因此,我从我的日历中获取数据,将其转换为JSON数组,将其映射到数组并返回它。或者至少那就是我想要的......注意那里有两个console.log()s。 getEventNames()函数中的一个呈现了我想要的数组,但是我的render()函数中的那个给了我“Promise {pending}”。

我对Promises一无所知,并且会接受他们的教育,但也有人可以教会我如何从我的功能中获取阵列?

拜托,谢谢,祝你复活节快乐(或者你的文化相当于春假):)

答案

利用state和componentDidMount是最常见的,因为它是“从远程端点加载数据”的最佳位置。

import React, { Component } from 'react';

export default class Calendar extends Component {
  constructor(props) {
   super(props);

    this.state = {
      eventNames: []
    }
  }

  componentDidMount() {
    fetch('...')
     .then(res => {
       res.json().then(eventNames => {
         this.setState({eventNames});
       });
    }).catch(err => {
     // Error handling
    })
  }

  render() {
      console.log(this.state.eventNames);
      return <div />;
  }
}

我也同意评论中陈述的所有内容,所以请记住这些:)

https://reactjs.org/docs/react-component.html#componentdidmount

以上是关于访问函数中的fetch()数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章

React 无法使用 Fetch API 下载数据 [重复]

如何从片段 KOTLIN 中调用意图 [重复]

javascript的fetch函数?

旧 mysql 函数的 PDO 等价物,如 fetch assoc [重复]

PHP mysqli_fetch_array选择最小值[重复]

有没有办法将2个非常相似的代码片段组合成一个函数并重复?