React Native 新架构实战课
蒋宏伟
58 同城前端架构师,58RN 负责人
18214 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
React Native 新架构实战课
15
15
1.0x
00:00/00:00
登录|注册

06|Pressable:如何实现一个体验好的点按组件?

你好,我是蒋宏伟。
点按组件的设计与我们的用户体验息息相关。有人会因为机械键盘的敲击感好,不买百来块的薄膜键盘,而花上贵十倍的价格去买 HHKB、Filco,也有人会因为某个应用的点按体验不好,而转投竞品应用。
如果你仔细观察过世界上那些流行的、口碑很好 App,比如微信,你会看到它们在点按组件的体验的细节上都做得特别好。
比如,微信的点按组件都是有交互反馈的,无论是背景颜色的加深,还是那些舒服的震动,又或者是动画。又比如,微信顶部右上角的加号按钮是很容易点击的,它的点击区域是比显示图标大上那么一丢丢,而且点到后,即使把手指挪开图标的位置再松开也是能触发点击的。
所有的这些设计都是“懂”用户的。担心你因为网络卡、机器卡不知道有没有自己点中,在你点完后给你视觉或触觉上的反馈;担心你走路的时候想点点不到,把事件的“可触发区域”、“可保留区域 ”设置得比视觉上的“可见区域”大上那么一些。
作为直接和用户打交道的工程师,我们也得“懂”用户,也得去优化我们负责的 App、页面的体验,还得在技术上搞懂点按组件使用方法和背后的原理,把这种最常用的人机交互体验给做到及格,做到优秀。
所以,今天这节课,我会以三个问题为脉络进行讲解:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了React Native中实现一个体验好的点按组件的方法和原理。作者围绕点按组件的设计与用户体验的关系展开讲解,讨论了在设计优秀通用组件时如何在用户体验和开发者体验上找到平衡。文章重点介绍了第三代Pressable组件的设计特点和使用方法,以及如何实现点击和长按事件的识别。此外,还强调了点按组件为什么需要支持用户中途取消点击的重要性。通过对不同版本点按组件的设计思路和实现方式的比较,读者可以了解如何在React Native中实现一个体验好的点按组件,同时也能借助它背后的设计原理,更“懂”用户,提升产品的用户体验。文章内容涵盖了技术原理和实际应用,对于React Native开发者和用户体验设计者都具有一定的参考价值。文章还介绍了盒模型区域、可触发区域HitRect和可保留区域PressRect的关系,以及如何通过设置Pressable组件的可触发区域HitSlop和可保留区域PressRect来提高用户点击的成功率和取消点击操作。总的来说,本文为读者提供了实现优秀点按组件的方法和原理,以及如何在React Native中提升用户体验的技术指导和实践建议。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《React Native 新架构实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • dao
    透明度会重新变为 1 ?应该是不透明度变为 1 吧。

    作者回复: 你是对的。 本文把 opacity 翻译成了透明度,但我查阅资料和思考确认后认为 opacity 更准确的翻译确实是不透明度。 国内资料很多资料都把 opacity 翻译成了透明度,可能是因为更贴合中文思维一些不用绕一下,我也被误导了。 参考 MDN 文档: https://developer.mozilla.org/zh-CN/docs/Web/CSS/opacity

    2022-04-14
    4
  • python4
    我按官网的顺序看的, 所以用了Touchble做按钮. 看到这里才知道按钮的最佳实践, 官网顺序有点坑啊

    作者回复: 官网的是文档用来查的,对初学者入门确实不友好。

    2022-04-19
    2
  • 小天儿
    作业二:个人感觉是因为手指与鼠标的差异,手指点击的范围更大,不似鼠标那么精准,所以就要添加防误触的处理逻辑(不能在第一时间进行处理,以方便用户取消),而双击手势,在移动端并不常用(我猜可能是因为两次点按的位置大概率会有偏移,提高了操作成本)

    作者回复: 给认真思考的同学点赞👍 正确答案在 16 讲中有解释,可以参考一下。

    2022-05-14
    1
  • 浩明啦
    想问一下,ios 里按钮组件点按出现轻微震动的效果
    2022-07-16
    1
  • 大神博士
    可保留区域 默认与 可触发区域一样大吧?
    2022-07-05
    1
  • 涂海生
    能不能多提供些 demo 和项目,可以多学习代码规范和用法
    2022-06-18
    1
  • demoker
    老师 可不可以单独出一节分享一下前端开发者提效的用法,作为一个原生开发者来说,希望学了课程之后可以少走弯路。
    2023-12-17归属地:北京
  • Geek_ca7af8
    1.Pressable组件可以通过style样式的pressed参数来区分设置点击的样式和非点击的样式 2.Pressable的扩大点击区域,可以通过其HitSlop属性来实现 3.Pressable的允许用户点击button后并且及时取消button的点击(允许用户反悔),可以通过PressRetentionOffset属性来设置,当手指最后touch屏幕的点不在PressRect之间的话,就不会触发点击操作。
    2023-09-25归属地:上海
  • Wcly👺
    如果从TouchableWithoutFeedback直接替换成Pressable组件,要注意样式上的差异
    2022-11-21归属地:广东
  • 大神博士
    Pressable 默认带动画吗
    2022-05-24
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部