微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我不能在ReactJS中循环

如何解决为什么我不能在ReactJS中循环

我知道我需要等待提取的返回。

我可以在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>
  )
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。