我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么用React做出好用的Switch组件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么用React做出好用的Switch组件

小编给大家分享一下怎么用React做出好用的Switch组件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

前言

HTML5 将 WEB 开发者的战场从传统的 PC 端带到了移动端.然而移动端交互的核心在于手势和滑动,如果只是将 PC 端的点击体验简单地移植到移动端,势必让移动端体验变得了无生趣.以某 APP 收银台的支付密码输入框为例,里面的 Switch 组件只能通过点击改变状态,和原生控件的体验有着非常大的差距,不符合移动端的交互习惯.接下来,我们来尝试做出一个支持手指滑动操作的 Switch 组件,提升用户体验.

手势检测

手势交互的关键在于一套手势事件监测系统,用于检测move, tap, double tap, long tap, swipe, pinch, rotate等手势行为.安卓和 IOS 都提供一套完善的手势系统供原生 APP 调用,遗憾的是,HTML5 还没有相应的 API,需要 HTML5 工程师自己实现.出于简化,我们的 Switch 组件只支持 move 事件,因此,本章也只实现 move 事件的检测.其他事件的检测我们将在下一篇博文 <<HTML5 手势检测原理和实现>> 中详细介绍.

我们对move事件的要求非常简单,就是每当手指在 DOM 内移动时,就把手指划过的相对距离告知监听器.

假设手指从 (X1,Y1) 点滑到 (X2,Y2) 点,那么手指在两点间滑动的X轴相对距离就是 X2 - X1 ,Y轴相对距离 Y2 - Y1.所以,只要我们能够获取手指的坐标位置,就能算出手指每次移动的相对距离,然后把&Delta;X和&Delta;Y告知 move 事件的监听函数.

所以,move事件的监听器一般是这样(注意ES6语法):

_onMove (event) {

  let {

    deltaX,  //手指在X轴上的位移

    deltaY   //手指在Y轴上的位移

  } = event;

  ...

}

无论多么复杂的手势系统,他们都会基于四个最基础的触摸事件:

touchstart

touchmove

touchend

touchcancel

通过他们可以获取手指触摸点的坐标信息,进而算出手指移动的相对距离.

根据上面的图解,先来实现 touch 事件监听函数:

_onTouchStart(e) {

  let point = e.touches ? e.touches[0] : e;

  this.startX= point.pageX;

  this.startY = point.pageY;

}

_onTouchStart 函数非常简单,就是记录下初始触摸点的坐标,保存在startX startY 变量中.

_onTouchMove(e) {

  let point = e.touches ? e.touches[0] :e;

  let deltaX = point.pageX - this.startX;

  let deltaY = point.pageY - this.startY;

  this._emitEvent('onMove',{

    deltaX,

    deltaY

  });

  this.startX = point.pageX;

  this.startY = point.pageY;

  e.preventDefault();

}

_onTouchMove 函数逻辑也比较清楚,通过 touch 的触摸点 point 和 startX, startY 得到手指的相对位移 deltaX, deltaY, 然后发出 onMove 事件,告知监听器有 move 事件发生,并携带 deltaX, deltaY 信息.最后,用现在的触摸点坐标去更新 startX, startY.

看完了这篇文章,相信你对“怎么用React做出好用的Switch组件”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么用React做出好用的Switch组件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

React父组件怎么调用子组件的方法

调用方法:1、类组件中的调用可以利用React.createRef()、ref的函数式声明或props自定义onRef属性来实现;2、函数组件、Hook组件中的调用可以利用useImperativeHandle或forwardRef抛出子组件ref来实现。
2023-05-14

怎么使用css3实现switch组件开关

这篇文章主要介绍了怎么使用css3实现switch组件开关,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。基于表单的checkbox效果图原理checkbox, 有两种状态,
2023-06-08

React函数组件与类组件怎么使用

这篇“React函数组件与类组件怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“React函数组件与类组件怎么使用”文
2023-06-30

怎么用React撸一个日程组件

本篇内容主要讲解“怎么用React撸一个日程组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用React撸一个日程组件”吧!目录结构└─Calendar │ data.d.ts
2023-06-05

微信小程序表单组件开关switch怎么用

这篇文章主要介绍“微信小程序表单组件开关switch怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序表单组件开关switch怎么用”文章能帮助大家解决问题。switch开关选择器。属性
2023-06-26

react组件样式引用失败怎么办

react组件样式引用失败的解决办法:1、通过“npm i --save antd”下载安装antd依赖包;2、在index.css顶部引入antd样式;3、通过“import { Button } from "antd";”在项目中引入想要的组件即可。
2023-05-14

使用react怎么实现一个Radio组件

使用react怎么实现一个Radio组件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。测试组件:class Test extends Component { constr
2023-06-14

怎么使用react实现一个tab组件

使用react实现一个tab组件的方法:1、通过“export default props => {...}”方式创建TAB button组件;2、通过“tab-group-layout.js”组件来传“tabIndex”,并设置默认选中的tab效果;3、用react继承“react.component”组件里的onMouseOver和OnMouseOut方法即可。
2022-11-22

JavaScript中React面向组件编程怎么使用

这篇文章主要介绍“JavaScript中React面向组件编程怎么使用”,在日常操作中,相信很多人在JavaScript中React面向组件编程怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaS
2023-07-05

vb怎么用picture控件输出数组

在VB中,可以使用Picture Box控件来输出数组。以下是一个示例代码,演示了如何使用Picture Box控件输出一个数组:```vbDim myArray(4, 4) As Integer' 初始化数组For i As Intege
2023-10-11

uniapp组件uni-popup弹出层怎么用

这篇文章主要介绍了uniapp组件uni-popup弹出层怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、基本用法