У меня есть простое веб-приложение, созданное с помощью сборки React Ionic4.Два «раздела» в приложении состоят из полноэкранных IonSlides с нумерацией страниц (pager={true}
).
Во всех браузерах, кроме iPad Air Safari, нумерация страниц выполняется правильно и появляются маркеры нумерации страниц.Однако в iPad Safari есть пустой узел разбиения на страницы (элементы маркера не заполнены).
Я ожидаю, что это состояние гонки, но я не могу точно определить, где или что вызывает это.Когда я отлаживаю и отслеживаю свойства компонента слайдов (который является экземпляром Swiper JS), я вижу, что swiper.params.pagination.el
не определено.
Может кто-нибудь помочь мне выяснить, почему оно не определено и / или как исправить?
Я пытался динамически добавлять слайды после componentDidMount
.Я попытался вызвать swiper.update()
в componentDidMount
, а также когда компонент входит в представление.Я попытался вызвать swiper.pagination.update()
и другие методы сброса / повторного обновления в swiper.
Вот мой урезанный / соответствующий код.
В классе представления объявитеползунок ref ->
private slider = createRef<any>();
В компоненте render () ->
<IonSlides ref={this.slider} pager={true}>
<IonSlide className="twocol">
content
</IonSlide>
<IonSlide className="twocol">
content
</IonSlide>
<IonSlide className="twocol">
content
</IonSlide>
<IonSlide className="twocol">
content
</IonSlide>
<IonSlide className="twocol">
content
</IonSlide>
</IonSlides>
В ionViewDidEnter кое-что из того, что я пробовал (закомментировано только для справки)->
ionViewDidEnter() {
this.slider.current.getSwiper().then((swiper:any) => {
// swiper.init();
// swiper.pagination.type='bullets';
// swiper.pagination.el='.swiper-pagination';
// swiper.pagination.init();
// swiper.pagination.render();
// swiper.pagination.update();
swiper.update();
swiper.slideTo(0,0);
}).catch((err:any) => {});
}
Я не получаю сообщений об ошибках.Пагинация - это просто пустой узел.Только в iPad Safari.Во всех других браузерах элемент пагинации содержит соответствующие узлы пагинации.