簡體   English   中英

在setState之后,子組件將不會使用新的道具進行更新

[英]Child component won't update with new props after setState

我正在使用google-map-react模塊,傳遞我想在API調用后更新的中心坐標。 它們是作為道具從父組件的狀態傳入的。 但是,當我更新父組件中的狀態時,子組件()不會更新,並且在控制台中我還會看到以下警告: GoogleMap: defaultCenter prop changed. You can't change default props. GoogleMap: defaultCenter prop changed. You can't change default props.

我原以為孩子會重新渲染,但這沒有發生。 有什么想法嗎?

const React = require('react')
const GoogleMap = require('google-map-react').default

const MapPage = React.createClass({
  propTypes () {
    return ({
      params: object
    })
  },
  getInitialState () {
    return ({
      zipSearch: this.props.params.zip || '90024',
      initialCoordinates: [59.955413, 30.337844]
    })
  },
  componentWillMount () {
    $.get('www.APICALL.com', function (result)     {
      var resources = JSON.parse(result);
      this.setState({
        initialCoordinates: [parseFloat(resources[0].latitude), parseFloat(resources[0].longitude)]
      })
    }.bind(this));
  },
  render () {
    var initialCoordinates = {lat: this.state.initialCoordinates[0], lng: this.state.initialCoordinates[1]}
    console.log(initialCoordinates) //this gets logged twice in console.log
    return (
      <div className='map-container'>
         <GoogleMap
          defaultCenter={initialCoordinates}
          defaultZoom={12}>
        </GoogleMap>
      </div>
    )
  }
})

module.exports = MapPage

該錯誤表明確切的原因,您無法更改默認值。 一次設置defaultCenter ,然后在center上使用動態狀態變量。 defaultZoomzoom相同,以防您需要更改它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM