Skip to content

Commit bb88f63

Browse files
authored
docs(react): update imports for swiper migration (#2851)
1 parent 3bd16bc commit bb88f63

File tree

2 files changed

+88
-120
lines changed

2 files changed

+88
-120
lines changed

docs/react/slides.md

Lines changed: 44 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ npm install swiper@latest
3939
```
4040

4141
:::note
42-
Create React App does not support pure ESM packages yet. Developers can still use Swiper, but they will need to use Swiper 7.2.0+ and use direct file imports. This guide assumes you are using Create React App and will show you how to use these direct imports.
42+
Developers using Create React App must use `react-scripts` v5.0.0+ with the latest version of Swiper.
4343
:::
4444

4545
## Swiping with Style
@@ -53,7 +53,7 @@ import React from 'react';
5353
import { IonContent, IonPage } from '@ionic/react';
5454
import { Swiper, SwiperSlide } from 'swiper/react';
5555

56-
import 'swiper/swiper.min.css';
56+
import 'swiper/css';
5757
import '@ionic/react/css/ionic-swiper.css';
5858

5959
const Home: React.FC = () => {
@@ -68,10 +68,6 @@ export default Home;
6868
Importing `@ionic/react/css/ionic-swiper.css` is **not** required to use Swiper.js with Ionic. This files is used for backward-compatibility with the `IonSlides` component and can be safely omitted if you prefer not to use the CSS Variables provided in the stylesheet.
6969
:::
7070

71-
:::note
72-
Not using Create React App? You can import the Swiper CSS from `swiper/css` instead.
73-
:::
74-
7571
### Updating Selectors
7672

7773
Previously, we were able to target `ion-slides` and `ion-slide` to apply any custom styling. The contents of those style blocks remain the same, but we need to update the selectors. Below is a list of selector changes when going from `ion-slides` to Swiper React:
@@ -92,7 +88,7 @@ import React from 'react';
9288
import { IonContent, IonPage } from '@ionic/react';
9389
import { Swiper, SwiperSlide } from 'swiper/react';
9490

95-
import 'swiper/swiper.less';
91+
import 'swiper/less';
9692
import '@ionic/react/css/ionic-swiper.css';
9793

9894
const Home: React.FC = () => {
@@ -110,7 +106,7 @@ import React from 'react';
110106
import { IonContent, IonPage } from '@ionic/react';
111107
import { Swiper, SwiperSlide } from 'swiper/react';
112108

113-
import 'swiper/swiper.scss';
109+
import 'swiper/scss';
114110
import '@ionic/react/css/ionic-swiper.css';
115111

116112
const Home: React.FC = () => {
@@ -125,14 +121,14 @@ export default Home;
125121

126122
Swiper exports two components: `Swiper` and `SwiperSlide`. The `Swiper` component is the equivalent of `IonSlides`, and `SwiperSlide` is the equivalent of `IonSlide`.
127123

128-
These components are imported from `swiper/react/swiper-react.js`:
124+
These components are imported from `swiper/react`:
129125

130126
```tsx
131127
import React from 'react';
132128
import { IonContent, IonPage } from '@ionic/react';
133-
import { Swiper, SwiperSlide } from 'swiper/react/swiper-react.js';
129+
import { Swiper, SwiperSlide } from 'swiper/react';
134130

135-
import 'swiper/swiper.min.css';
131+
import 'swiper/css';
136132
import '@ionic/react/css/ionic-swiper.css';
137133

138134
const Home: React.FC = () => {
@@ -151,10 +147,6 @@ const Home: React.FC = () => {
151147
export default Home;
152148
```
153149

154-
:::note
155-
Not using Create React App? You can import the Swiper components from `swiper/react` instead.
156-
:::
157-
158150
## Using Modules
159151

160152
By default, Swiper for React does not import any additional modules. To use modules such as Navigation or Pagination, you need to import them first.
@@ -166,15 +158,15 @@ To begin, we need to import the modules and their corresponding CSS files from t
166158
```tsx
167159
import React from 'react';
168160
import { IonContent, IonPage } from '@ionic/react';
169-
import { Swiper, SwiperSlide } from 'swiper/react/swiper-react.js';
161+
import { Swiper, SwiperSlide } from 'swiper/react';
170162
import { Autoplay, Keyboard, Pagination, Scrollbar, Zoom } from 'swiper';
171163

172-
import 'swiper/swiper.min.css';
173-
import 'swiper/modules/autoplay/autoplay.min.css';
174-
import 'swiper/modules/keyboard/keyboard.min.css';
175-
import 'swiper/modules/pagination/pagination.min.css';
176-
import 'swiper/modules/scrollbar/scrollbar.min.css';
177-
import 'swiper/modules/zoom/zoom.min.css';
164+
import 'swiper/css';
165+
import 'swiper/css/autoplay';
166+
import 'swiper/css/keyboard';
167+
import 'swiper/css/pagination';
168+
import 'swiper/css/scrollbar';
169+
import 'swiper/css/zoom';
178170
import '@ionic/react/css/ionic-swiper.css';
179171

180172
const Home: React.FC = () => {
@@ -193,24 +185,20 @@ const Home: React.FC = () => {
193185
export default Home;
194186
```
195187

196-
:::note
197-
Not using Create React App? You can import these modules from `swiper/css/[MODULE NAME]` instead (i.e. `swiper/css/autoplay`).
198-
:::
199-
200188
From here, we need to provide these modules to Swiper by using the `modules` property on the `Swiper` component:
201189

202190
```tsx
203191
import React from 'react';
204192
import { IonContent, IonPage } from '@ionic/react';
205-
import { Swiper, SwiperSlide } from 'swiper/react/swiper-react.js';
193+
import { Swiper, SwiperSlide } from 'swiper/react';
206194
import { Autoplay, Keyboard, Pagination, Scrollbar, Zoom } from 'swiper';
207195

208-
import 'swiper/swiper.min.css';
209-
import 'swiper/modules/autoplay/autoplay.min.css';
210-
import 'swiper/modules/keyboard/keyboard.min.css';
211-
import 'swiper/modules/pagination/pagination.min.css';
212-
import 'swiper/modules/scrollbar/scrollbar.min.css';
213-
import 'swiper/modules/zoom/zoom.min.css';
196+
import 'swiper/css';
197+
import 'swiper/css/autoplay';
198+
import 'swiper/css/keyboard';
199+
import 'swiper/css/pagination';
200+
import 'swiper/css/scrollbar';
201+
import 'swiper/css/zoom';
214202
import '@ionic/react/css/ionic-swiper.css';
215203

216204
const Home: React.FC = () => {
@@ -234,15 +222,15 @@ Finally, we can turn these features on by using the appropriate properties:
234222
```tsx
235223
import React from 'react';
236224
import { IonContent, IonPage } from '@ionic/react';
237-
import { Swiper, SwiperSlide } from 'swiper/react/swiper-react.js';
225+
import { Swiper, SwiperSlide } from 'swiper/react';
238226
import { Autoplay, Keyboard, Pagination, Scrollbar, Zoom } from 'swiper';
239227

240-
import 'swiper/swiper.min.css';
241-
import 'swiper/modules/autoplay/autoplay.min.css';
242-
import 'swiper/modules/keyboard/keyboard.min.css';
243-
import 'swiper/modules/pagination/pagination.min.css';
244-
import 'swiper/modules/scrollbar/scrollbar.min.css';
245-
import 'swiper/modules/zoom/zoom.min.css';
228+
import 'swiper/css';
229+
import 'swiper/css/autoplay';
230+
import 'swiper/css/keyboard';
231+
import 'swiper/css/pagination';
232+
import 'swiper/css/scrollbar';
233+
import 'swiper/css/zoom';
246234
import '@ionic/react/css/ionic-swiper.css';
247235

248236
const Home: React.FC = () => {
@@ -281,15 +269,15 @@ We can install the `IonicSlides` module by importing it from `@ionic/react` and
281269
```tsx
282270
import React from 'react';
283271
import { IonContent, IonPage, IonicSlides } from '@ionic/react';
284-
import { Swiper, SwiperSlide } from 'swiper/react/swiper-react.js';
272+
import { Swiper, SwiperSlide } from 'swiper/react';
285273
import { Autoplay, Keyboard, Pagination, Scrollbar, Zoom } from 'swiper';
286274

287-
import 'swiper/swiper.min.css';
288-
import 'swiper/modules/autoplay/autoplay.min.css';
289-
import 'swiper/modules/keyboard/keyboard.min.css';
290-
import 'swiper/modules/pagination/pagination.min.css';
291-
import 'swiper/modules/scrollbar/scrollbar.min.css';
292-
import 'swiper/modules/zoom/zoom.min.css';
275+
import 'swiper/css';
276+
import 'swiper/css/autoplay';
277+
import 'swiper/css/keyboard';
278+
import 'swiper/css/pagination';
279+
import 'swiper/css/scrollbar';
280+
import 'swiper/css/zoom';
293281
import '@ionic/react/css/ionic-swiper.css';
294282

295283
const Home: React.FC = () => {
@@ -434,7 +422,7 @@ Accessing these properties can be tricky as you want to access the properties on
434422

435423
```tsx
436424
import React, { useState } from 'react';
437-
import { Swiper, SwiperSlide } from 'swiper/react/swiper-react.js';
425+
import { Swiper, SwiperSlide } from 'swiper/react';
438426
import { Swiper as SwiperInterface } from 'swiper';
439427
...
440428
const Home: React.FC = () => {
@@ -477,9 +465,9 @@ If you are using effects such as Cube or Fade, you can install them just like we
477465
import React from 'react';
478466
import { IonContent, IonPage, IonicSlides } from '@ionic/react';
479467
import { EffectFade } from 'swiper';
480-
import { Swiper, SwiperSlide } from 'swiper/react/swiper-react.js';
468+
import { Swiper, SwiperSlide } from 'swiper/react';
481469

482-
import 'swiper/swiper.min.css';
470+
import 'swiper/css';
483471
import '@ionic/react/css/ionic-swiper.css';
484472

485473
const Home: React.FC = () => {
@@ -504,10 +492,10 @@ Next, we need to import the stylesheet associated with the effect:
504492
import React from 'react';
505493
import { IonContent, IonPage, IonicSlides } from '@ionic/react';
506494
import { EffectFade } from 'swiper';
507-
import { Swiper, SwiperSlide } from 'swiper/react/swiper-react.js';
495+
import { Swiper, SwiperSlide } from 'swiper/react';
508496

509-
import 'swiper/swiper.min.css';
510-
import 'swiper/modules/effect-fade/effect-fade.min.css';
497+
import 'swiper/css';
498+
import 'swiper/css/effect-fade';
511499
import '@ionic/react/css/ionic-swiper.css';
512500

513501
const Home: React.FC = () => {
@@ -526,20 +514,16 @@ const Home: React.FC = () => {
526514
export default Home;
527515
```
528516

529-
:::note
530-
Not using Create React App? You can import these effects from `swiper/css/[EFFECT NAME]` instead (i.e. `swiper/css/effect-fade`).
531-
:::
532-
533517
After that, we can activate it by setting the `effect` property on `swiper` to `"fade"`:
534518

535519
```tsx
536520
import React from 'react';
537521
import { IonContent, IonPage, IonicSlides } from '@ionic/react';
538522
import { EffectFade } from 'swiper';
539-
import { Swiper, SwiperSlide } from 'swiper/react/swiper-react.js';
523+
import { Swiper, SwiperSlide } from 'swiper/react';
540524

541-
import 'swiper/swiper.min.css';
542-
import 'swiper/modules/effect-fade/effect-fade.min.css';
525+
import 'swiper/css';
526+
import 'swiper/css/effect-fade';
543527
import '@ionic/react/css/ionic-swiper.css';
544528

545529
const Home: React.FC = () => {

0 commit comments

Comments
 (0)