Функция
componentDidMount
вызывается после рендеринга, и хотя ваш вызов находится в componentWillMount
, поскольку он является асинхронным вызовом, он будет разрешен только после запуска цикла рендеринга компонента и, следовательно, данные будут иметь толькозначение после рендера.Чтобы правильно обработать такой сценарий, вы должны условно визуализировать ваши данные в рендере.
class Admin extends React.Component {
state = {
access: null,
};
componentDidMount() {
this.unListen = firebase.auth().onAuthStateChanged(user => {
if (user) {
this.setState(() => ({ access: true }));
}
});
}
componentWillUnmount() {
this.unListen();
}
render(){
const { access } = this.state;
if(access !== null) {
return null;
}
return <Tab access={this.state.access}/>
}
}