-1

所以我有一个标题栏,当我使用 stackNavigation 打开个人资料屏幕时会隐藏它

配置文件屏幕:

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或其他组件的构造函数内)。渲染方法应该是 props 和 state 的纯函数;构造函数副作用是一种反模式,但可以移至componentWillMount.

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

4

1 回答 1

-1

正如ewizard所说,从

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

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

于 2017-11-21T23:20:15.323 回答