我试图从Foursquare API获得最合适的场地照片,但是,我无法访问数组中对象的id值。
我创建了一个组件,只是为了获得最合适的照片。我的组件将场地作为道具,完全没有问题。在React Development Tool中,我可以看到所有场地都是道具。
在componentDidMount()中:
fetch(
`https://api.foursquare.com/v2/venues/${this.props.location.id}/photos?
limit=1&client_id=something&client_secret=something&v=20180726`
)
但是这里this.props.location id是未定义的。当我尝试通过手动设置场地ID时,它可以工作。我有很多场地,我需要得到每张照片。在App.js中:
<MyComponent location={this.state.places} />
您可以确定MyComponent位置根本不为空。
编辑:现在我可以访问对象的id值,但是,许多照片与场地并不完全相关,我怎样才能从Foursquare api获得最合适的照片?
我打赌this.state.places
是一个数组。这意味着,this.props.location
也是一个数组。这意味着你要从数组中查询id
属性(this.props.location
)。你应该写类似的东西
<MyComponent location={this.state.places[0]} />
要么
<MyComponent location={this.state.places[current]} />
您应该访问render()中的props或使用生命周期方法getDerivedStateFromProps(),并将以前的状态与新的状态进行比较。 Have a look at the documentation