【发布时间】:2019-04-22 12:31:33
【问题描述】:
我正在尝试学习 React,并正在尝试为我的网站制作一个链接到公共 Google 日历的日历。我花了很长时间才弄清楚如何获得我需要的信息,但我做到了。现在,我遇到了一个问题,它更像是面向原生 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 一无所知,并且愿意接受有关它们的教育,但是任何人都可以教我如何从我的函数中取出数组吗?
拜托,谢谢你,祝你复活节愉快(或你文化中的春假):)
【问题讨论】:
-
在使用 Promise 之前先了解一下,因为理解这个概念需要时间。其次,您可以将数组存储到一个状态中,然后使用 map 函数循环出数组
-
你为什么要结合
async/await和.then? -
你不能也不应该从
render调用带有副作用的异步函数。
标签: javascript reactjs ecmascript-6 es6-promise