所以当我用stackNavigation打开配置文件屏幕时,我有一个标题栏
ProfileScreen:
export default class ProfileScreen extends React.Component {
constructor(props) {
super(props);
props.screenProps.updateHeader();
}
// Code goes on
//..........
//................
//...........................
}
这将从父类调用updateHeader,然后调用该函数
主要(家长班):
export default class Main extends React.Component {
constructor(props){
super(props);
this.state = {
showHeader: true
};
}
updateState = () => {
this.setState({
showHeader: !this.state.showHeader
});
}
render() {
return (
<View style={styles.container}>
{renderIf(this.state.showHeader,
<Header />
)}
<UserStack screenProps={{ updateHeader: this.updateState }} />
</View>
);
}
}
它工作但有点慢。
导出项目时它会更好用吗?
而且我也收到了这个警告:
警告:无法在现有状态转换期间更新(例如在render
或其他组件的构造函数中)。渲染方法应该是道具和状态的纯函数;构造函数的副作用是反模式,但可以移动到componentWillMount
。
我该怎么做才能解决这个问题?
正如ewizard所说的那样
componentWillMount() { this.props.screenProps.updateHeader(); }
而不是构造函数修复警告。