Перед загрузкой приложения React мне необходимо проверить 2 условия
- Пользователь вошел в систему, если не перенаправить на страницу входа
- Все пользовательские настройки, полученные с помощью API,если не отображать экран загрузки.
Итак, в методе рендеринга у меня есть следующие условия:
if (!this.isUserLoggedIn()) return <NotifyPleaseLogin />;
else if (!this.state.PageCheck) {
return (
<PageLoading
clientId={Config.clientId}
setPageReady={this.setPageReady()}
/>
);
} else {
return "Display the page";
В этом сценарии я ожидаю, что произойдет, еслипользователь не авторизован, пользователь перенаправлен на страницу входа.Если пользователь вошел в систему и в данный момент страница получает запрос API, он увидит компонент PageLoading (экран загрузки) и, наконец, если страница готова, страница отобразится.
Сейчас я получаю Cannot update during an existing state transition (such as within render). Render methods should be a pure function of props and state.
ошибка, которая связана с тем, что я выполняю обновление setState в методе Render родительского объекта, а также получаю TypeError: props.setPageReady is not a function at PageLoading.js:29
ошибку при попытке запустить родительскую функцию, которая устанавливает для состояния PageReady значение true, как показано ниже
setPageReady() {
this.setState({ PageCheck: true });
}
Как это настроить, чтобы дочерний элемент мог отображать загрузочную страницу до тех пор, пока страница не будет готова (во время этого дочерний процесс может выполнять вызов API и извлекать пользовательские настройки), а затем дать родителю знать, что все параметры получены и находятся в избыточности, чтобы родительский элемент могпродолжить загрузку страницы?