我有一个模态组件,应该在 setState 改变时被调用,但是由于某种原因它没有更新。在第一个文件中,在 render 中设置如下内容。
<ModalParcel showModal={this.state.showModal} parcelToConfirm={this.state.dataForParcelToConfirm} />
在Modal组件的constructor()中,我设置了以下内容。
constructor(props) {
super(props);
console.log("Constructor for modal componenet called.")
//this.renderRowForMain = this.renderRowForMain.bind(this);
this.state = {
show: this.props.showModal
};
}
render() {
if(this.state.show == true){
var content =
<View style={styles.modal}>
<View style={styles.modalContent}>
<TouchableHighlight onPress={() => this.closeModal()}>
<Text>Close</Text>
</TouchableHighlight>
</View>
</View>;
}else {
var content = null;
}
return ( content );
}
问题在于constructor()仅在初始创建时调用一次。我以为当我更新状态以显示模态框时,constructor会再次被调用,但事实并非如此。我基本上想改变状态来显示模态框,然后重新运行render()。