问题描述
我知道我需要等待提取的返回。
我可以在return()中做到这一点,但是我似乎无法在以下方面做到这一点:
render() {
{!this.state.heat ?(
this.items = this.state.heat.map((item) =>
<li>{item.location[0].coordinates[0]}</li>
);)}
就在退货之前。
我需要在退货单中致电{items}。
我该如何解决?
export default class Heatmap extends Component {
state = {
loading: true,heat: null,}
async componentDidMount(){
const url = "http://localhost:3010/api";
fetch(url).then(response =>
response.json().then(data => ({
data: data,status: response.status
})
).then(res => {
this.setState({heat: res.data})
console.log(res.status,res.data)
}));
}
render() {
{!this.state.heat ?(
this.items = this.state.heat.map((item) =>
<li>{item.location[0].coordinates[0]}</li>
);)}
return (
<div>
{!this.state.heat ? (<div>Loading...</div>) : (
<div>
<LoadScript
googleMapsApiKey="AIzaSyB65TiJzvcRXQ0XyDt_0B8IyX2CqYLEnQI"
>
<GoogleMap
mapContainerStyle={containerStyle}
center={center}
zoom={10}
>
{ /* Child components,such as markers,info windows,etc. */ }
<></>
</GoogleMap>
</LoadScript>
<ul>
{this.items}
</ul>
</div>
)}
</div>
)
}
}
解决方法
第一件事,格式化代码,因此很容易找到我们在哪里做错了。除了格式化外,我在您的代码中看不到任何错误。我做了一些格式化,您可以尝试一下
render() {
const { heat } = this.state
if (!heat) return (<div>Loading...</div>)
const items = heat.length ? heat.map(item => (
<li>{item.location[0].coordinates[0]}</li>
) : []
return (
<div>
<LoadScript googleMapsApiKey="AIzaSyB65TiJzvcRXQ0XyDt_0B8IyX2CqYLEnQI">
<GoogleMap mapContainerStyle={containerStyle} center={center} zoom={10} >
{ /* Child components,such as markers,info windows,etc. */ }
</GoogleMap>
</LoadScript>
{
items.length && (
<ul>
{ items }
</ul>
)
}
</div>
)
}