修改
"警告:setState(...):只能更新已安装或安装的组件"意思?
答案 0 :(得分:2)
Fisrt,将所有React组件重命名为像Camel Case一样。
class firstChild ... --> class FristChild
<fristChild> --> <FristChild>
其次,在你的FirstChild
渲染方法中,你应该将元素包装成一个封闭的标记,如下所示:
class FirstChild extends Component {
render(){
return (
<div>
<input ... />
<button ... />
</div>
)
}
}
第三,当您在cloneElement
上使用this.props.children
时,您应该在Proptypes.<type>
而不是secondChildren
中使用Propstypes.<type>.isRequired
。检查here以查看原因。
class SecondChild extends Component {
static propTypes = {
submitSuccess: React.PropTypes.bool, // remove isRequired
}
}
无论如何,我已经测试了你的代码,它运行正常。
答案 1 :(得分:1)
您可以尝试使用componentWillUnmount
生命周期功能,以检查组件何时卸载。
在设置状态之前,您还可以使用标志来表示组件已卸载:
saveName(nameText) {
if (!this.isUnmounted){
this.setState({submitSuccess: true});
}
}
componentWillUnmount() {
this.isUnmounted = true;
}