【发布时间】:2019-01-30 01:11:38
【问题描述】:
我对 React 中的构造函数有疑问
看https://codesandbox.io/s/lpr147kmyl的例子
import React from "react";
import ReactDOM from "react-dom";
import "./styles.css";
class SimpleComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
number: props.number,
}
console.log('constructor', this.state.number)
}
render() {
return (
<div>
{this.props.number}
</div>
)
}
}
class App extends React.Component {
constructor(props){
super(props)
this.state = {
showFirstComponent: true,
}
setInterval(() => (
this.setState(previousState => (
{ showFirstComponent: !previousState.showFirstComponent }
))
), 1000);
}
render(){
let c1 = <SimpleComponent number="1" />
let c2 = <SimpleComponent number="2" />
return (
<div className="App">
<h1>
{this.state.showFirstComponent ? c1 : c2}
</h1>
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
我检查了控制台日志,只看到一条日志消息。 当我创建两个 SimpleComponent 实例时,我认为那里应该有两条日志消息:
let c1 = <SimpleComponent number="1" />
let c2 = <SimpleComponent number="2" />
我的问题是:
React 什么时候创建新的组件实例并调用组件的构造函数?
谢谢,
【问题讨论】:
-
看你的例子,它看起来像是在渲染组件时,例如三元运算符的结果(只有 1 个分量)。
标签: reactjs constructor