React Native预设占位placeholder的使用

发布时间 - 2026-01-11 03:27:10    点击率:

当我们首次打开一个app的时候会请求接口获取数据,那么获取数据的这段时间展示什么给用户呢?国内很多app都是千篇一律的用一个菊花代替(俗称loading),或者更有心一点的做一个好看一点的loading,但是这样当拿到数据渲染页面的时候会很生硬的切换,总感觉很low。

facebook首页列表是用一个接近真实布局的骨架动画来代替loading,这东西可以称之为skeleton screen或者placeholder,但是翻译过来真不知道该翻译成什么合适,这么做的好处就是在内容加载完成后可以做到流畅无缝切换真实布局,细节决定产品的质量,我觉得facebook对用户体验,交互的细节做的挺不错。先上一张我的fb截图。


rn-placeholder是rn版本的placeholder,我在次基础上做了对flastlist,listview,SectionList的适配封装。先看一下在我的开源项目中的效果:


看完上面的效果是不是感觉比传统的loading要舒服多了,下面是example:

一:flastlist,listview,SectionList使用demo

 import { ListItem, ListParagraph } from 'components';
 export default class Zi extends Component {
  render() {
   const { loading } = this.props;
   return (
    <ListParagraph
     ParagraphLength={4} // 要渲染的条数
     isLoading={loading} // loading状态
     hasTitle // 是否需要title
     list={this.sectionList} // 这就是SectionList的函数
    />
   );
  }

 }

注:ListParagraph组件目前在我开源项目中,还没有添加到npm,有需要的到我项目中拿,项目地址在文章末尾

二:左图右内容布局

import Placeholder from 'rn-placeholder';
export default class Cheng extends Component {
  render() {
   return <Placeholder.ImageContent
    hasRadius //左边的方块是否需要圆角
    size={60} // 大小
    animate="fade" // 动画方式
    lineNumber={4} // 右边的线显示的数量
    lineSpacing={5} // 行间距的距离
    firstLineWidth=90% // 第一行的宽度
    lastLineWidth="70%" // 最后一行的宽度
    onReady={this.state.isReady} // 内容是否加载完毕,如果加载完毕会切换到你的真实内容布局
   >
    <Text>左图右内容布局</Text>
   </Placeholder.ImageContent>
  }  
 }

三:段落布局

 import Placeholder from 'rn-placeholder';
 export default class Cheng extends Component {
  render() {
   return <Placeholder.Paragraph
    size={60}
    animate="fade"
    lineNumber={4}
    lineSpacing={5}
    lastLineWidth="30%"
    onReady={this.state.isReady}
   >
    <Text>段落布局</Text>
   </Placeholder.Paragraph>
  }  
 }


四:还有Line(行布局),Media(图片布局),使用方法跟 三 一样。

完美收官!

项目demo地址:https://github.com/duheng/Mozi

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# React  # Native  # placeholder  # 占位  # 详解React Native监听Android回退按键与程序化退出应用  # react.js 父子组件数据绑定实时通讯的示例代码  # React-Native左右联动List的示例代码  # React-Native使用Mobx实现购物车功能  # react-native DatePicker日期选择组件的实现代码  # React Native模块之Permissions权限申请的实例相机  # 加载  # 开源  # 都是  # 左图  # 是在  # 还没有  # 行间  # 我在  # 在我  # 我觉得  # 首次  # 这就是  # 到我  # 这段  # 看完  # 真不  # 做一个  # 当我们  # 这么做  # 会很 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  香港服务器如何优化才能显著提升网站加载速度?  网站制作软件有哪些,制图软件有哪些?  如何在服务器上三步完成建站并提升流量?  三星网站视频制作教程下载,三星w23网页如何全屏?  如何在阿里云部署织梦网站?  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  Python图片处理进阶教程_Pillow滤镜与图像增强  如何在Windows 2008云服务器安全搭建网站?  Laravel用户密码怎么加密_Laravel Hash门面使用教程  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  使用C语言编写圣诞表白程序  Laravel如何配置Horizon来管理队列?(安装和使用)  Firefox Developer Edition开发者版本入口  简单实现Android验证码  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  Laravel如何记录自定义日志?(Log频道配置)  Laravel怎么使用Intervention Image库处理图片上传和缩放  javascript基于原型链的继承及call和apply函数用法分析  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  如何在腾讯云免费申请建站?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  魔方云NAT建站如何实现端口转发?  如何在阿里云ECS服务器部署织梦CMS网站?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  如何在万网开始建站?分步指南解析  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  Laravel如何生成API文档?(Swagger/OpenAPI教程)  个人摄影网站制作流程,摄影爱好者都去什么网站?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  新三国志曹操传主线渭水交兵攻略  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  QQ浏览器网页版登录入口 个人中心在线进入  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  网页设计与网站制作内容,怎样注册网站?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  如何为不同团队 ID 动态生成多个“认领值班”按钮  Python文件流缓冲机制_IO性能解析【教程】  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何登录建站主机?访问步骤全解析  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel如何处理文件下载请求?(Response示例)