Я пытаюсь сделать запрос к API FourSquare, который желает, чтобы объект времени отправлялся в формате YYYYMMDD. Я написал функцию, которая создает объект времени, однако у меня возникают проблемы с его использованием в моем приложении React.Запросить API жизненного цикла компонента реакции
я сделать вызов в моей Profile
компонента:
'use strict'
import React, { Component } from 'react'
import request from 'superagent'
import TimeService from './services/time'
import config from './config'
class Profile extends Component {
componentDidMount() {
TimeService.getCurrentTime((err, currentDate) => {
this.setState({
time: currentDate
})
})
}
componentWillMount() {
let currentTime = this.state.time
let venue = '4dd64e9de4cd37c8938e7b83'
//let venue = this.props.venueId
let clientId = config.CLIENT_ID
let clientSecret = config.CLIENT_SECRET
request.get(`https://api.foursquare.com/v2/venues/${venue}/hours/?\&client_id=${clientId}&client_secret=${clientSecret}&v=${currentTime}`)
.accept('json')
.end((err, res) => {
if(err) return
let result = res.body
console.log(res.body)
console.log(result.response.hours.timeframes)
})
}
Когда я загружаю приложение в Chrome у меня есть сообщение об ошибке: bundle.js:44492 Uncaught TypeError: Cannot read property 'time' of null
Я полагаю, что мне нужно изменить порядок функций в методах монтажа компонентов, однако я не уверен, как это сделать.
Мы столкнулись с множеством сходных условий гонки, связанных с извлечением данных из методов жизненного цикла React. В итоге мы решили отвлечь его в lib, чтобы нашим разработчикам не нужно было об этом думать: https://github.com/DigitalGlobe/jetset – glortho