0
我正在使用具有导航功能的SPA的react和react-router。每次切换导航项目时,路由器都会调用响应组件的“构造函数”。这里是代码的相关位:React路由器在切换路由时调用组件构造函数
class Home extends React.Component {
constructor(props) {
super(props);
console.log('component constructed!');
this.state = {
counter: 0
}
setInterval(() => this.setState({
counter: this.state.counter+1
}), 1000)
}
render() {
return (
<h3>Counter: {this.state.counter}</h3>
);
}
}
ReactDOM.render(
<Router history={hashHistory}>
<Route path="/" component={App}>
<IndexRoute component={Home} />
<Route path="profile" component={Profile} />
<Route path="settings" component={Settings} />
</Route>
</Router>,
document.getElementById('container')
);
每次我从一个选项卡切换到另一个时,计数器从0 显然,我的理解是render()
应该被称为每次启动其状态的改变或在路由器切换标签,但为什么要拨打constructor
换标签?请问路由器是如何工作的,或者我做错了什么?
此问题已被要求here,但接受的答案是关于“重新渲染”而不是重新构建组件。