#reactjs #asynchronous #call #mount
#reactjs #асинхронный #вызов #монтировать
Вопрос:
У меня есть родительский компонент и два дочерних компонента. Один успех и один сбой Мне нужно показать эти компоненты на основе асинхронного вызова при загрузке страницы. Итак, я выполнил асинхронный вызов на странице componentDidMount. Но это вызывает двойной рендеринг.
constructor(props) {
super(props)
this.state = {
showSuccessPage: false
}
}
componentDidMount() {
ActiveAccount.fetchActiveAccount(this.handleSuccess, this.handleFailure)
}
handleSuccess() {
this.setState({
showSuccessPage: true
)}
}
...
render() {
...
return (
{showSuccessPage amp;amp; <SuccessPage />}
{!showSuccessPage amp;amp; <FailurePage />}
)
}
Он всегда сначала отображает страницу сбоя, а затем обновляется для отображения страницы успеха. как я могу предотвратить двойной рендеринг?
Комментарии:
1. Вы можете сократить свою логику рендеринга до
showSuccessPage ? <SuccessPage /> : <FailurePage />
.
Ответ №1:
Для рендеринга компонентов по назначению двоичного состояния недостаточно. Это может быть выражено с помощью одного свойства состояния showSuccessPage
, которое имеет 3 значения, undefined
, true
и false
. Или с 2 свойствами состояния:
...
{state.accountFetched amp;amp; (
state.accountFetchSuccess ? <SuccessPage/> : <FailurePage/>
)}
...