渲染屏幕时自动调用函数

问题描述 投票:-1回答:1

所以当我用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

我该怎么做才能解决这个问题?

javascript react-native navigation expo stack-navigator
1个回答
-1
投票

正如ewizard所说的那样

componentWillMount() { this.props.screenProps.updateHeader(); }

而不是构造函数修复警告。

© www.soinside.com 2019 - 2024. All rights reserved.