Я предлагаю вам иметь flags в родительском компоненте state для ваших дочерних компонентов что-то вроде child1Loaded, child2Loaded, ... etc , иметь обработчик в родительский компонент , чтобы обновить его из своих componentDidMount()
.
this.state = {
isLoggedIn: getCookie("Authorization") ? true : false,
loading: true,
child1Loaded:false,
child2Loaded:false,
child3Loaded:false,
child4Loaded:false,
child5Loaded:false,
};
updateLoadedFlagHandler = (childName) =>{
this.setState({[childName]:true});
}
render() {
document.body.style = "background: #fafafa;";
if (this.state.isLoggedIn) {
return (
<div>
{this.state.loading ? <Loading /> : ""}
<Child1 loadedUpdateHandler={updateLoadedFlagHandler} childName='child1Loaded'/>
<Child2 loadedUpdateHandler={updateLoadedFlagHandler} childName='child2Loaded'/>
<Child3 loadedUpdateHandler={updateLoadedFlagHandler} childName='child3Loaded'/>
Welcome Home, user
</div>
);
} else {
// User not logged, error
return <Redirect to="/login" />;
}
}
Дочерний компонент:
componentDidMount(){
this.props.loadedUpdateHandler(this.props.childName);
}
Вы можете проверить все эти флагидо true до тех пор покажите свой загрузчик.