Javascript 渲染屏幕时自动调用函数
因此,我有一个标题栏,当我用stackNavigation打开配置文件屏幕时,我会隐藏它 档案屏幕:Javascript 渲染屏幕时自动调用函数,javascript,react-native,navigation,expo,stack-navigator,Javascript,React Native,Navigation,Expo,Stack Navigator,因此,我有一个标题栏,当我用stackNavigation打开配置文件屏幕时,我会隐藏它 档案屏幕: export default class ProfileScreen extends React.Component { constructor(props) { super(props); props.screenProps.updateHeader(); } // Code goes on //.......... //............
export default class ProfileScreen extends React.Component {
constructor(props) {
super(props);
props.screenProps.updateHeader();
}
// Code goes on
//..........
//................
//...........................
}
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>
);
}
}
这将从父类调用updateHeader,然后调用函数
Main(父类):
export default class ProfileScreen extends React.Component {
constructor(props) {
super(props);
props.screenProps.updateHeader();
}
// Code goes on
//..........
//................
//...........................
}
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>
);
}
}
导出默认类Main.Component{
建造师(道具){
超级(道具);
此.state={
showHeader:正确
};
}
updateState=()=>{
这是我的国家({
showHeader:!this.state.showHeader
});
}
render(){
返回(
{renderIf(this.state.showHeader,
)}
);
}
}
它工作起来有点慢
当我导出项目时,它会工作得更好吗
我也收到了这样的警告:
警告:无法在现有状态转换期间更新(例如在render
或其他组件的构造函数中)。渲染方法应该是道具和状态的纯函数;构造函数的副作用是一种反模式,但可以移动到组件willmount
我该怎么做才能解决这个问题呢?正如埃维扎德所说的那样
componentWillMount() { this.props.screenProps.updateHeader(); }
而不是构造函数修复了警告。well可能会调用
props.screenProps.updateHeader()来自构造函数的代码>是问题吗<代码>无法在现有状态转换期间更新(例如在渲染或其他组件的构造函数中)。
@ewizard您是对的。从按钮内部调用它是可行的,但问题是我的应用程序使用滑动导航,因此每次页面呈现时它都应该自动调用该函数。哦,我认为错误消息是告诉您使用生命周期挂钩componentWillMount
…在配置文件屏幕中尝试组件-组件willmount(){props.screenProps.updateHeader();}
并从构造函数中取出props.screenProps…