Один из способов решить эту проблему - использовать setInterval и вызвать функцию обновления для циклического прохождения по текстам, предполагая, присутствуют ли они в виде массива.
Проще говоря, например.
Давайте сохранимloadingText в состоянии как loadingText: ['text1', 'text2', 'text3']
, переменная для отслеживания текущего элемента как currentLoadingTextIndex: 0
и вызова setInterval в componentDidUpdate
.Будьте осторожны при вызове здесь функции обновления, так как одна неправильная ошибка приведет к падению вашего приложения.
componentDidUpdate(prevProps, prevState) {
if (!prevState.isLoading && this.state.isLoading) {
this.timerId = setInterval(this.changeLoadText, 2000);
} else if (prevState.isLoading && !this.state.isLoading) {
clearInterval(this.timerId);
}
}
и, наконец, наша функция обновления
changeLoadText = () => {
this.setState(prevState => {
return {
currentLoadingTextIndex:
(prevState.currentLoadingTextIndex + 1) %
prevState.loadingText.length,
};
});
};
Я присоединяю рабочую выставку Демо для ясности.