我有一个关于componentDidMount
机制的问题。我正在开发一个天气应用,使用外部API获取城市的预报数据。
我的预报容器是这样构建的
var React = require('react');
var Forecast = require('../components/Forecast');
var weatherHelpers = require('../utils/weather');
var ForecastContainer = React.createClass({
getInitialState: function(){
return {
isLoading: true,
forecastData: {}
}
},
componentDidMount: function(){
weatherHelpers.getCityForecast(this.props.routeParams.city)
.then(function(results){
this.setState({
isLoading: false,
forecastData: results
})
}.bind(this))
},
render: function() {
return (
<Forecast
city={this.props.routeParams.city}
isLoading={this.state.isLoading}
forecastData={this.state.forecastData}
/>
)
}
});
module.exports = ForecastContainer;
我正在使用axios发送http请求到天气API,并将该功能存储在名为weatherHelpers的帮助文件中。
function Forecast(props) {
console.log(props)
return (
<div style={styles.container}>Forecast component</div>
)
}
当我从我的Forecast组件中记录props时,它会记录两次。一次是初始状态,另一次是更新后的状态。这只是状态生命周期的运作方式吗:在componentDidMount内部运行指令之间存在延迟的原因?我的组件是否重新渲染(因此有两个控制台日志)?如果是这样的话,那么是什么机制在起作用呢?这个组件如何监听自己的状态?
componentWillMount
。 - jmargolisvtcomponentDidMount
。我修改了问题,因为这让我在最初的回答中感到困惑。 - Jim Stewart