This question already has answers here:
How do I return the response from an asynchronous call?
(38个答案)
去年关闭。
我正在尝试学习React,并试图为链接到公共Google日历的网站制作日历。花了很长时间才弄清楚如何获得所需的信息,但我还是对其进行了管理。现在,我遇到了一个问题,它是面向原始Javascript的...
我的代码如下所示:
因此,我从日历中获取数据,将其转换为JSON数组,将其映射为数组并返回。或者至少这就是我要去的...
请注意,其中有两个
我对Promises一无所知,并且愿意接受有关Promises的教育,但是有人可以教我如何使阵列脱离我的职能吗?
拜托,谢谢,祝您复活节快乐(或您所在文化的同等的春季假期):)
我也同意评论中提到的所有内容,因此也请记住这些内容:)
https://reactjs.org/docs/react-component.html#componentdidmount
(38个答案)
去年关闭。
我正在尝试学习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/[email protected]/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()
。 getEventNames()
函数中的一个表示我想要的数组,但是render()
函数中的一个表示“ Promise {pending}”。我对Promises一无所知,并且愿意接受有关Promises的教育,但是有人可以教我如何使阵列脱离我的职能吗?
拜托,谢谢,祝您复活节快乐(或您所在文化的同等的春季假期):)
最佳答案
利用状态和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
08-19 13:50