Используйте состояние родительского элемента, чтобы решить, когда должен отображаться загрузчик.
Следующий код должен находиться в родительском компоненте, который отображает загрузчик.
В конструкторе инициализируйте состояние
this.state = {showLoader: false}
Определить функцию (в классе) для отображения компонента загрузчика.Определив его как функцию стрелки, вы автоматически привязываете его к классу, поэтому у нас нет проблем с передачей его в качестве обратного вызова.
showLoader = () => {
this.setState({ showLoader: true })
}
В componentDidMount задайте тайм-аут, когда вы хотите, чтобы загрузчик отображался, и передайтефункция showLoader в качестве обратного вызова.В этом примере он будет вызван через 1000 мс.
componentDidMount() {
setTimeout(this.showLoader, 1000)
}
В функции рендеринга, только если для этого состояния установлено значение true, будет отображаться Loader
render() {
const { showLoader } = this.state
return (
<div>
... other stuff
{showLoader && <Loader \>}
<\div>
)
}
Надеюсь, это поможет !!
edit:
Если вы хотите использовать какой-то переход, вместо условного рендеринга компонента Loader, передайте ему состояние showLoader как опору и используйте его для условного добавленияclass.
Родительская функция рендеринга: аналогично предыдущему отрывку для строки, отображающей Loader
<Loader show={showLoader} \>
В дочернем рендере, предполагая, что этот div оборачивает остальную часть разметки
<div className={this.props.show ? ‘show’ : ‘’} \>
Тогда, если div начинается с opacity 0 и имеет свойство transition: opacity 1s (измените время на все, что вам подходит), тогда классу 'show' нужно будет просто добавить opacity 1