在react 中使用 Swiper@6.8.4 -(解决initialSlide初始化设置无效问题)

2023-10-26

 下载Swiper

yarn add swiper@6.8.4 

 基础使用

引入模块:

import { Swiper, SwiperSlide } from 'swiper/react';
import 'swiper/swiper-bundle.css';

基础使用:

<Swiper
    spaceBetween={5} // 间隔
    initialSlide={index} // 初始化显示第几个
    slidesPerView={7}  // 每页显示个数
    slidesPerGroup={6}  // 翻页个数
>

  {
    list.map((m, i) => {
      const { name = '', infoData = {} } = m;
        return (
          <SwiperSlide>
            <div className={styles.lineStrucType_start}>
              <img
                src={bdzImg}
                alt=""
                />
              <div style={{ fontSize: '1rem' }}>{name}</div>
            </div>
          </SwiperSlide>
        );
    })
  }
</Swiper>

添加额外模块(Pagination)

默认情况下,Swiper React使用Swiper的核心版本(没有任何附加组件)。如果要使用导航、分页和其他组件,必须先安装它们。

Swiper官方文档参考地址

// 引入 安装模块,导航模块
import SwiperCore, { Pagination } from 'swiper'
import 'swiper/components/pagination/pagination.min.css';

// 使用安装模块对引入的模块进行安装
SwiperCore.use([ Pagination ])

<Swiper
    spaceBetween={5}
    initialSlide={index}
    slidesPerView={7} 
    slidesPerGroup={6}  
    pagination={{ clickable: true }} // pagination配置
>

BUG:

遇到一个问题:在请求数据后,要将Swiper定位到特定的SwiperSlide。按理来说Swiper设定了initialSlide={index}的值应该就行,但没有生效。在传递数据的时候打印了一下对应的传值index的值,发现setState之后传的index确实有变化,但是Swiper并未定位生效,怀疑是initialSlide这个参数的改变并不能触发Swiper重绘。

解决方法:

方法一:在Swiper里onSwiper初始化SwiperObj实例,然后在改变请求数据改变之后SwiperObj.slideTo(index)去跳转。

<Swiper
    spaceBetween={5}
    initialSlide={0}
    slidesPerView={7} 
    slidesPerGroup={6}  
    pagination={{ clickable: true }}
    onSwiper={(el) => setSwiperObj(el)}
>


//数据请求完成之后
swiperObj.slideTo(index)

方法二:按照封装组件的思路,传的值确实是发生了变化但是接受值的参数initialSlide没有触发组件的更新改变,可以尝试新增一个key参数来接收变化的值,看下是否能触发更新重绘。发现确实有效。..

<Swiper
  key={index}
  spaceBetween={5}
  initialSlide={index}
  slidesPerView={7} 
  slidesPerGroup={6}  
  pagination={{ clickable: true }}
>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在react 中使用 Swiper@6.8.4 -(解决initialSlide初始化设置无效问题) 的相关文章

  • 可以使用 jQuery 或 Javascript 将图片的特定部分用作链接吗?

    我有这个想法 将图片 而不是文本 的各个部分链接到不同的页面或网站 并且我想在不实际创建不同的照片并将它们彼此靠近的情况下完成 这样看起来就像是一张完整的图片 这里有人知道如何使用 JavaScript 的变体 例如 jQuery 或纯 J
  • 从未用 @flow 标记的导入文件中获取类型定义

    TL DR我怎么告诉flow从未声明的导入模块导入类型定义 flow 加长版 流接缝能够从不使用流语法的文件中派生类型 请参阅示例 示例文件 flow js if Math random lt 0 5 var y hello else va
  • JavaScript 重定向到新窗口

    我有以下代码 它根据下拉列表的值重定向到页面 我如何使其在新窗口中打开 function goto form var index form select selectedIndex if form select options index
  • 保持未知数量的 div 居中,每行最多 4 个

    我有一个简单的问题 但我自己无法解决 简而言之 有一个未知电话我必须在页面中放置的元素数量 最多 每行 4 个元素 但仍居中 此图片给您一个提示 我为了示例而设置它 详细 在上图中我涵盖了不同的场景 例如 如果总共有 5 个元素 则应使用第
  • 如何将 Google Charts 与 Vue.js 库一起使用?

    我正在尝试使用 Vue js 库使用 Google Charts 制作图表 但我不知道如何添加到 div 这是我尝试做的 这是如何使用普通 javascript 添加图表 这是文档的代码示例 https developers google
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • jquery从变量中删除html元素

    我将 html 保存在变量中 var itinerary events today html 我有很多 html 和一个按钮我想删除 它的 ID 为 myButton 如何从变量中保存的 html 中删除它 我建议这种方法 var itin
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 在javascript中解析json - 长数字被四舍五入

    我需要解析一个包含长数字的 json 在 java servlet 中生成 问题是长数字被四舍五入 当执行这段代码时 var s x 6855337641038665531 var obj JSON parse s alert obj x
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • Babel 7 Jest Core JS“TypeError:wks不是函数”

    将我的项目升级到 Babel 7 后 通过 Jest 运行测试会抛出以下错误 测试在 Babel 6 中运行没有任何问题 但在 Babel 7 中失败并出现以下错误 TypeError wks is not a function at Ob
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • Electron - 为什么在关闭事件时将 BrowserWindow 实例设置为 null

    The 电子文档 https electronjs org docs api browser window 提供以下代码示例来创建新窗口 const BrowserWindow require electron let win new Br
  • 有没有办法阻止 prettier / prettier-now 将函数参数分解为新行

    当使用 prettier prettier now 在保存时进行格式化时 当一个函数包装另一个函数时 它会中断到一个新行 我想知道是否有办法阻止这种行为 例如 期望的输出 app get campgrounds id catchAsync
  • 在 vue.js 中访问数组对象属性

    给定以下数组vue js packageMaps Object packageMap 0 Object Id 16 PackageType flag list ProductCode F BannerBase packageMap 1 Ob
  • 摆脱node-jsx

    在我的 NodeJS 应用程序的路由器中 我想渲染一个 React 应用程序 由于它没有被浏览器化 并且已反应 因此它返回unexpected token lt 构建时出错 我发现如果我require node jsx install 它不
  • 如何在jquery中以相反的顺序迭代元素? [复制]

    这个问题在这里已经有答案了 我是jquery的新手 我想知道如何使用each 在jquery中以相反的顺序迭代表单元素 任何帮助 将不胜感激 尝试这个 input get reverse each function
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • fullCalendar 未显示正确的结束日期

    我正在看调试页面 http jsbin com wukofacaxu edit js outputFullCalendar 官方网站的 我想安排一个活动时间为 22 09 2015 至 30 09 2015 dd mm yyyy 但它只显示

随机推荐