class Clock extends React.Component {
render() {
return (
<div>
<MyComponent/>
</div>
);
}
}
假定此组件重新呈现。每次渲染时,都会创建MyComponent的新实例吗?
答案 0 :(得分:2)
React比较从render()方法返回的当前Element树结构。 React使用生成的键(或分配的键)将每个Element匹配到Component实例。 React确定我们是否有新实例(A.3),删除实例(A.0.1)或更新现有实例(A,A.0,A.0.0)。
如果键相同,则React将把props传递给现有实例,从而启动其Update生命周期。如果我们添加了新组件或更改了键,React将根据Element数据创建新实例。这些新组件随后进入“出生/安装”阶段。
答案 1 :(得分:1)
不,一旦创建了类组件,React就不会创建它的新实例,除非将该组件卸载并再次安装。
您可以检查在父组件渲染时是否多次调用了构造函数。
class MyComponent extends Component {
constructor(props){
super(props);
console.log("New instance of MyComponent is created");
}
}