# 🏅Day36 - React 套件應用 (2) - Swiper.js
使用 React 搭配 swiper.js 可以輕鬆建立美觀的滑動輪播效果。Swiper 提供了多種配置選項,支持無限滾動、自動播放、垂直滾動、懸停停止等多種功能。以下介紹如何在 React 中引入 Swiper,並實現一個簡單的圖片輪播範例。
[官方連結](https://swiperjs.com/)
```js
const { useEffect } = React;
function App() {
useEffect(() => {
new Swiper(".swiper-container", {
slidesPerView: 1,
spaceBetween: 10,
navigation: {
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev",
},
pagination: {
el: ".swiper-pagination",
clickable: true,
},
});
}, []);
return (
<div className="swiper-container">
<div className="swiper-wrapper">
<div className="swiper-slide">Slide 1</div>
<div className="swiper-slide">Slide 2</div>
<div className="swiper-slide">Slide 3</div>
<div className="swiper-slide">Slide 4</div>
</div>
<div className="swiper-pagination"></div>
<div className="swiper-button-next"></div>
<div className="swiper-button-prev"></div>
</div>
);
}
ReactDOM.render(<App />, document.getElementById("root"));
```
另外也可以加入在 new Swiper 中加入 autoplay、loop 等設定,例如:
```js
const { useEffect } = React;
function App() {
useEffect(() => {
new Swiper(".swiper-container", {
slidesPerView: 1, // 每次顯示的幻燈片數量
spaceBetween: 50, // 兩張圖片之間的間距
navigation: { // 啟用左右箭頭
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev",
},
pagination: { // 啟用下方的點點導航
el: ".swiper-pagination",
clickable: true,
},
autoplay: { // 自動播放,每隔 3 秒切換
delay: 3000,
},
loop: true, // 循環播放
});
}, []);
return (
<div className="swiper-container">
<div className="swiper-wrapper">
<div className="swiper-slide">Slide 1</div>
<div className="swiper-slide">Slide 2</div>
<div className="swiper-slide">Slide 3</div>
<div className="swiper-slide">Slide 4</div>
</div>
<div className="swiper-pagination"></div>
<div className="swiper-button-next"></div>
<div className="swiper-button-prev"></div>
</div>
);
}
ReactDOM.render(<App />, document.getElementById("root"));
```
## 題目
請複製(右下角 fork)這個[範例](https://codepen.io/yen-kg/pen/MWNRpOX),並且完成下面條件:
1. 在 useEffect 中加入 new Swiper,使 swiper 正常運作。
2. 加入 slidesPerView、spaceBetween 並且帶入值都為 3。
3. 加入 navigation、pagination 以及 autoplay 每 5 秒執行一次。
<!-- 解答:
```
const { useEffect } = React;
function App() {
useEffect(() => {
new Swiper(".swiper-container", {
slidesPerView: 3,
spaceBetween: 3,
navigation: {
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev",
},
pagination: {
el: ".swiper-pagination",
clickable: true,
},
autoplay: {
delay: 5000,
},
});
}, []);
return (
<div className="swiper-container">
<div className="swiper-wrapper">
<div className="swiper-slide">Slide 1</div>
<div className="swiper-slide">Slide 2</div>
<div className="swiper-slide">Slide 3</div>
<div className="swiper-slide">Slide 4</div>
</div>
<div className="swiper-pagination"></div>
<div className="swiper-button-next"></div>
<div className="swiper-button-prev"></div>
</div>
);
}
ReactDOM.render(<App />, document.getElementById("root"));
```
-->
| Name | Codepen |
| -------- | -------- |
| 7lun | [codepen](https://codepen.io/mfyvqhsn-the-bold/pen/bNeYQrR?editors=1010) |
|TWLeoC|[Codepen](https://codepen.io/TWLeoC/pen/azZErWW?editors=0010)|
| cks40660| [codepen](https://codepen.io/CKS40660/pen/dPXmBqQ)|
| Tetsu |[Codepen](https://codepen.io/ttgchang/pen/emzMwXe)|
| Chia |[Codepen](https://codepen.io/Chia-the-encoder/pen/emzMqJM)|
| Nooooora | [CodePen](https://codepen.io/Nora-Ch/pen/RNRybrV?editors=0010)|
| 小懿 | [CodePen](https://codepen.io/YT-the-vuer/pen/LEZmYWd?editors=0010)|
| RUDY | [CodePen](https://codepen.io/Rudy-crw/pen/ogLdgwK?editors=0010)|
| Eileen | [CodePen](https://codepen.io/Eileen-io/pen/zxBjxmb)|
| Jenna | [CodePen](https://codepen.io/abiscc14/pen/zxBjKQQ)|
| Percy | [CodePen](https://codepen.io/Percy-Ku/pen/YPWLpwp)|
| kashiwatei | [CodePen](https://codepen.io/kashiwatei/pen/VYjxmyb)|
| 社子畢卡索 | [CodePen](https://codepen.io/pen?template=LEZmbrx)|
| 地瓜 | [CodePen](https://codepen.io/ChippyYU/pen/ByzxpYX?editors=1010)|
| 老屠 | [CodePen](https://codepen.io/fsgfxvlb-the-selector/pen/pvbVwej?editors=0010)|
| Leonard | [CodePen](https://codepen.io/hyyfjqra-the-sans/pen/ZYOoaaB?editors=1010)|
| wind | [CodePen](https://codepen.io/wind7y/pen/azZGqqv) |
| Rogan | [CodePen](https://codepen.io/RoganHsu/pen/raLvZKZ?editors=1010) |
| Jin | [CodePen](https://codepen.io/Jin-L/pen/gbMzBYm) |
| 星雪糖 | [CodePen](https://codepen.io/vfpofbgm-the-scripter/pen/dPXegPY) |
| andy | [CodePen](https://codepen.io/ewnblckz-the-styleful/pen/VYjxqpO?editors=0010) |
| Melanie | [CodePen](https://codepen.io/pnrcspte-the-animator/pen/yyJjWPZ) |
| 平平 | [CodePen](https://codepen.io/ypinpin/pen/XJKqLVM) |
| JiaMori | [CodePen](https://codepen.io/jiamori/pen/ogLyYNN) |
| KOMATSU PEI | [CodePen](https://codepen.io/Komatsu2021/pen/dPXmBaa) |
| Miikaa | [codepen](https://codepen.io/Miikaa/pen/YPWjrZX) |
| 7Red | [CodePen](https://codepen.io/cch2655/pen/bNexzjW) |