子组件不会在setState之后使用新的props进行更新
Child component won't update with new props after setState
我使用的是google-map-react模块,传入我想在API调用后更新的中心坐标。它们是作为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
上使用动态状态变量。同样的事情与defaultZoom
和zoom
,如果你需要改变它。
相关文章:
- Javascript循环不会自我更新
- 添加文字和评论功能更新Div
- AngularJS:ng之后,重复$scope值未按预期更新
- 如何通过数组更新角度子范围
- Ajax聊天消息重复而不仅仅是更新
- 通过CSV文件上载更新数据库表
- 平均值:无法将数据更新到数据库
- $rootScope未使用forEach进行更新
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- Angular:更新一次性绑定的数据
- Javascript更新孙窗口中的表单元素
- 更新道具后,这.props总是=== nextProps / prevProps
- 我可以更新React.js中的组件's props吗?
- 更新时重新渲染this.props.location.query.somequery Reactjs
- 子组件不会在setState之后使用新的props进行更新
- React Router: this.props.params在链接点击后没有更新
- 在React子组件上使用props更新状态
- 当props通过parent状态更新时,React - child不更新
- 反应:从渲染方法外部更新组件的 props,而不使用状态