前提・実現したいこと
前提として、ReactJsでSwiper Reactを活用しようとしています。
実現したいことは動的な要素が自動で動くスライダーを作ることです。
(またこちらが初めての質問でして、失礼なこと・情報不足がありましたらお伝えください。)
発生している問題・エラーメッセージ
発生している問題としては、スライダーが自動で動かないことです。
ただ初期の画像とメッセージは表示されています。
以下の状況では、スライダーが自動で動くことが確認できています。
- mapで動的に
<SwiperSlide>
内を生成するのではなく、静的なコンテンツを自動で動かす - 一度画面表示をした後に、画面更新をせずに、再度compileをするとスライダーが自動で動く
- (不明確で恥ずかしいのですが)console画面などを確認したりしていると動く
また現象として、4枚の画像をmapで動的に<SwiperSlide>
内で生成しているのですが、初期はindex=3(最後の画像)が表示されています。
該当のソースコード
ReactJS
1import React from 'react'; 2import { Slider } from '../slider/slider'; 3 4 5export class SwiperList extends React.Component { 6 render() { 7 return ( 8 <div className="hero"> 9 <div className="slide"> 10 <Slider swiperContents={this.props.swiperContents} /> 11 </div> 12 </div> 13 ) 14 } 15}
ReactJS
1import React from 'react'; 2 3import { Swiper, SwiperSlide} from 'swiper/react'; 4import SwiperCore, { Autoplay } from 'swiper'; 5import 'swiper/swiper.scss'; 6 7SwiperCore.use([Autoplay]); 8 9export class Slider extends React.Component { 10 render() { 11 return ( 12 <div> 13 <Swiper 14 autoplay={{ 15 delay: 500, 16 disableOnInteraction: false 17 }} 18 loop={true} 19 > 20 { 21 this.props.swiperContents.map((swiperContent,index) => { 22 return ( 23 <SwiperSlide key={index}> 24 <img src={swiperContent.mediaUrl} key={swiperContent.id} alt="" /> 25 <p className="msg">{swiperContent.text}</p> 26 </SwiperSlide> 27 ) 28 }) 29 } 30 </Swiper> 31 </div> 32 ) 33 } 34} 35
console画面にあるReact Componentsには以下の表示がされています。
Swiper [ForwardRef] SwiperSlide key=".$3-duplicate-3-append" [ForwardRef] SwiperSlide key=".$0" [ForwardRef] SwiperSlide key=".$1" [ForwardRef] SwiperSlide key=".$2" [ForwardRef] SwiperSlide key=".$3" [ForwardRef] SwiperSlide key=".$0-duplicate-0-prepend" [ForwardRef]
試したこと
<SwiperSlide>
をメソッドでrendershouldSwiperUpdate={true}
,rebuildOnUpdate= {true}
,observer= {true}
を<Swiper>
に付与
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。