ReactのuseEffectを使ってAPIからデータを取得して直ぐに参照しようとすると、値が取得されておらずにnullになっていることがあります。 その原因と対処方法について記載します。 useEf…
Reactで画像がスライドして次々と表示されるカルーセルを実装するために便利なプラグイン「react-slick」の紹介です。
react-slickのサンプル
ここが使いやすい
1画面に3つずつスライドするような場合、slideToShow
に3を指定するだけで実現できます。
Reactからしたらカルーセルで表示したい画像はただ配列で持ってるだけです。
イマイチなプラグインだと、3つずつ表示したいなら、そのようにHTMLを出力しなきゃいけないです。
<div>
<img src="./img01.png" />
<img src="./img02.png" />
<img src="./img03.png" />
</div>
react-slickなら、カルーセルにしたいデータをとにかく書き出して何枚ずつ表示するかはSliderに設定するだけでOKです。
<Slider {...settings}>
{images.map((img) => (
<div>
<img src={img} />
</div>
))}
</Slider>
react-slickを入手する
GitHub: akiran/react-slick
ドキュメント: React Slick Document
npm
npm i react-slick
yarn
yarn add react-slick
画像の間に余白を入れたい
サンプルでは画像が3枚並んでおり、間に白い余白があるように見えますが、これは余白ではなく縁が白い画像です。紛らわしい。
残念ながら、Sliderのpropsとして余白を設定することは出来ないようです。
Issue – how can i set slide item margin?に挙がっており作者自身が以下のように回答しています。
Using css is the best way to control margin/padding on slides
CSS使え
ということなので、cssを作成して既存のクラスを上書きします。
slickSlick.cssなど適当なファイルを作成します。
slideで使用されている以下のクラス名にpaddingを追加します。
.slick-slide {
padding: 0 15px;
}
使用したいコンポーネントファイルの先頭でcssを読み込みます。
import style from './slickSlide.css';
コメントを書く