前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >react-id-swiper 的使用

react-id-swiper 的使用

原创
作者头像
kmokidd
发布于 2019-08-14 04:01:48
发布于 2019-08-14 04:01:48
4.6K00
代码可运行
举报
运行总次数:0
代码可运行

ReactJs component for iDangerous Swiper

github 地址demo地址。支持多种场景,作者对 issues 的响应极快。

封装了非常成熟的 iDangerous Swiper ,基本可以在大部分“滑动”场景中使用,无论是顶部 banner 轮播、image gallery,还是横/竖向的手势切换内容,都能用上。有丰富的参数、事件监听可供调用。使用门槛低,无论是在函数组件里还是在类组件中,很容易调用。

在 2.1.0 之后 react-id-swiper 用起了 React Hook,demo 里给出的基本都是函数组件的使用方法。笔者的使用场景则是在类组件中,和函数组件不太一样的地方主要在如何获取 swiper 对象 ( react-id-swiper 的作者给了 Hook 写法的 demo ),进而使用它的方法和属性。

按照文档安装后,假设现在需要在 A 组件中使用 Swiper,A 组件是一个竖向整屏滑动的长列表,效果可以参考 fullpage 的官网首页:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// A.js
import Swiper from 'react-id-swiper';
import "react-id-swiper/lib/styles/scss/swiper.scss";

...

export default class Acomponent extends React.Component {
	handleSlideChange = () => {
		const { swiper } = this.state;
    const { list } = this.props;
    // 当列表长度大于 1 时,才需要更新 swiper 的当前状态
    if (swiper && list && list.length > 1) {
      this.setState(prevState => ({
        swiper: {
          ...prevState.swiper,
          activeIndex: swiper.swiperRef.activeIndex
        }
      }));
    }
	}
    
	render() {
    const { initSlideNum } = this.props;
		const params = {
      // 当前停留在列表的哪一页,从 0 开始
      initialSlide: initSlideNum ? initSlideNum : 0,
      // 声明滑动方向
      direction: "vertical",
      // 也可以叫“敏感度”,当滑动超过60px,才会触发显示下一页/上一页
      // 上下滑动的时候和页面滚动条(一页内的内容太多所以有 scroll)会有手势冲突,需要调整“敏感度”平衡这种冲突
      threshold: 60,
      // 当需要整屏滚动的时候,默认的 height 会导致容器计算错误,需要显示声明高度
      height: parseInt(window.innerHeight),
      // 获取 swiper 对象,Swiper 组件提供了各种方法和属性 http://idangero.us/swiper/api/#methods
      // 这些都是挂在 DOM 对象上的,函数组件不支持 ref 属性,所以把这个对象直接挂在了 state 中
      getSwiper: obj => {
        if (this.state && !this.state.swiper) {
          this.setState({
            swiper: {
              swiperRef: obj,
              activeIndex: obj.activeIndex
            }
          });
        }
      },
      on: {
        // 监听 Swiper 的事件,其他 Event 可以参考文档 http://idangero.us/swiper/api/#events
        slideChange: () => {
          this.handleSlideChange();
        }
      }
    };
	}
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
百度前端高频react面试题总结
(2)如果已经创建了 Create React App 项目,需要将 typescript 引入到已有项目中
beifeng1996
2022/10/25
1.7K0
从 0 到 1 实现 React 系列 —— 5.PureComponent 实现 && HOC 探幽
本系列文章在实现一个 cpreact 的同时帮助大家理顺 React 框架的核心内容(JSX/虚拟DOM/组件/生命周期/diff算法/setState/PureComponent/HOC/...) 项目地址
牧云云
2018/09/19
7440
从 0 到 1 实现 React 系列 —— 5.PureComponent 实现 && HOC 探幽
提示手把手带你用react hook撸一遍class组件的特性
react hook是继16.6的Suspense、lazy、memo后的又一巨大的令人兴奋的特性。然后有各种文章说了hook的优缺点,其中缺点包括:没有直接替代getSnapshotBeforeUpdate、componentDidUpdate生命周期的hook、不能像class组件那样写this、函数太大。这只是表面的现象,只要稍微思考一下,hook其实是无所不能的,我甚至相信未来挑不出hook的毛病来。今天手把手带大家过一遍如何实现class组件特性。
lhyt
2019/05/29
1.6K0
关于React中状态保存的研究
在使用react搭配react-router做应用的时候,你可能遇到这样的问题,当我从第一个页面过渡到第二个页面,然后返回之后,发现之前的页面的状态全部不见了,即回到了初始的状态。 这点在页面存在多个TAB页或者多条件筛选的时候体验会更加明显,这时候我又不得不点击我之前选择的页签,重新选择筛选条件,然后再进行搜索。因此,在这种情况下,保存之前的状态显得尤为亟待解决,下面是自己实践出来的几种方法,做一下分享,同时希望和各位一起探讨,看能不能有什么更好的办法。 代码:github 解决方案一:子路由方式 //
糊糊糊糊糊了
2018/05/09
4.3K0
关于React中状态保存的研究
React 轮播动画探索
1. 前言 1.1. 氛围气泡需求 最近投入了一个需求,遇到一个需要用动画去实现的场景。 我们的产品大大管它叫氛围气泡,在很多应用(淘宝、抖音、bilibili)的直播间场景都会有类似这样营造氛围感的组件,能够让你感知到其他用户在当前直播间的行为。 这个东西看起来转瞬即逝的,但背后其实是基于一套和 push 通道相关的设计: 前人栽树后人乘凉,所幸大佬们把 push 消息中心 和 后台服务 都建设得很完善,所以这次开发我只需要做这么一件事情: 设置监听 push 的回调,拿到数据渲染对应组件。 1.2.
用户1097444
2022/06/29
2.5K0
React 轮播动画探索
失败前端一面必会react面试题集锦
虚拟 dom 相当于在 js 和真实 dom 中间加了一个缓存,利用 dom diff 算法避免了没有必要的 dom 操作,从而提高性能。
beifeng1996
2022/12/20
5590
浅谈 React 生命周期
作为一个合格的React开发者,它的生命周期是我们必须得了解的,本文将会以下几个方面介绍React生命周期:
用户8921923
2022/10/24
2.3K0
浅谈 React 生命周期
react16常见api以及原理剖析
React 与 Vue 有很多相似之处,React 和 Vue 都是非常优秀的框架,它们之间的相似之处多过不同之处,并且它们大部分最棒的功能是相通的:如他们都是 JavaScript 的 UI 框架,专注于创造前端的富应用。不同于早期的 JavaScript 框架“功能齐全”,Reat 与 Vue 只有框架的骨架,其他的功能如路由、状态管理等是框架分离的组件。
前端迷
2019/09/25
1K0
react16常见api以及原理剖析
百度前端一面高频react面试题指南_2023-02-23
简言之,HOC是一种组件的设计模式,HOC接受一个组件和额外的参数(如果需要),返回一个新的组件。HOC 是纯函数,没有副作用。
用户10358021
2023/02/23
2.9K0
用 React 分页显示数据用react分页显示数据
展示一下主要三个组件:父组件listBox、列表组件List、按钮组件PageButton
一个会写诗的程序员
2018/08/17
3K0
用 React 分页显示数据用react分页显示数据
【React】417- React中componentWillReceiveProps的替代升级方案
因为最近在做一个逻辑较为复杂的需求,在封装组件时经常遇到父组件props更新来触发子组件的state这种情景。在使用componentWillReceiveProps时,发现React官网已经把componentWillReceiveProps重名为UNSAFE_componentWillReceiveProps,但是我发现了getDerivedStateFromProps可以替代,却又被一篇博客告知这个也尽量别使用。因为组件一旦使用派生状态,很有可能因为没有明确的数据来源导致出现一些bug和不一致性。既然提倡避免使用,肯定也会有相应的解决方案。
pingan8787
2019/11/26
2.9K0
35 道咱们必须要清楚的 React 面试题
虚拟 DOM (VDOM)是真实 DOM 在内存中的表示。UI 的表示形式保存在内存中,并与实际的 DOM 同步。这是一个发生在渲染函数被调用和元素在屏幕上显示之间的步骤,整个过程被称为调和。
前端小智@大迁世界
2019/11/07
2.6K0
React的class组件及属性详解!
React 有两种组件:class组件 和 函数组件。class组件需要继承 React.Component,用法如下:
Learn-anything.cn
2021/11/28
3.1K0
这些react面试题你会吗,反正我回答的不好
第二个参数是一个函数,该函数会在 setState函数调用完成并且组件开始重渲染时调用,可以用该函数来监听渲染是否完成。
beifeng1996
2022/09/24
1.2K0
React 面试必知必会 Day9
切换组件是一个渲染许多组件中的一个组件。我们需要使用对象来将 props 值映射到组件。
用户1250838
2021/07/30
1K0
一天梳理完React所有面试考察知识点
在shouldComponentUpdate()判断中,有一个有意思的问题,解释为什么 React setState() 要用不可变值
beifeng1996
2022/10/06
2.8K0
React: States is tricky
类似于 Android 的生命周期调节参数,此外 state 必须在定义它的那个 class 里面使用。
szhshp
2022/09/21
4330
「react进阶」年终送给react开发者的八条优化建议
笔者是一个 react 重度爱好者,在工作之余,也看了不少的 react 文章, 写了很多 react 项目 ,接下来笔者讨论一下 React 性能优化的主要方向和一些工作中的小技巧。送人玫瑰,手留余香,阅读的朋友可以给笔者点赞,关注一波 。陆续更新前端文章。
用户6835371
2021/06/01
1.8K0
「react进阶」年终送给react开发者的八条优化建议
React Hooks 解析(上):基础
React Hooks 是从 v16.8 引入的又一开创性的新特性。第一次了解这项特性的时候,真的有一种豁然开朗,发现新大陆的感觉。我深深的为 React 团队天马行空的创造力和精益求精的钻研精神所折服。本文除了介绍具体的用法外,还会分析背后的逻辑和使用时候的注意事项,力求做到知其然也知其所以然。
Dickensl
2022/06/14
7700
前端高频react面试题整理5
createElement是JSX被转载得到的,在 React中用来创建 React元素(即虚拟DOM)的内容。cloneElement用于复制元素并传递新的 props。
beifeng1996
2023/01/09
9400
相关推荐
百度前端高频react面试题总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文