React Native预设占位placeholder的使用


Posted in Javascript onSeptember 28, 2017

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

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

React Native预设占位placeholder的使用

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

React Native预设占位placeholder的使用

看完上面的效果是不是感觉比传统的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>
  }  
 }

React Native预设占位placeholder的使用

三:段落布局

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>
  }  
 }

React Native预设占位placeholder的使用

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

完美收官!

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

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

Javascript 相关文章推荐
javascript数组组合成字符串的脚本
Jan 06 Javascript
js实现的仿新浪微博完美的时间组件升级版
Dec 20 Javascript
使用js操作cookie的一点小收获分享
Sep 03 Javascript
jquery ajax jsonp跨域调用实例代码
Dec 11 Javascript
jQuery中Find选择器用法示例
Sep 21 Javascript
微信小程序开发教程之增加mixin扩展
Aug 09 Javascript
原生JS上传大文件显示进度条 php上传文件代码
Mar 27 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
Apr 21 Javascript
小程序清理本地缓存的方法
Aug 17 Javascript
史上最为详细的javascript继承(推荐)
May 18 Javascript
JavaScript实现拖动对话框效果的实现代码
Oct 12 Javascript
微信小程序实现录音Record功能
May 09 Javascript
import与export在node.js中的使用详解
Sep 28 #Javascript
AngularJS 仿微信图片手势缩放的实例
Sep 28 #Javascript
AngularJS路由删除#符号解决的办法
Sep 28 #Javascript
深入理解React高阶组件
Sep 28 #Javascript
基于webpack 实用配置方法总结
Sep 28 #Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
Sep 28 #Javascript
JQuery 选择器、DOM节点操作练习实例
Sep 28 #jQuery
You might like
Smarty模板快速入门
2007/01/04 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
利用jquery包将字符串生成二维码图片
2013/09/12 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
js定时器(执行一次、重复执行)
2014/03/07 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
2019/04/15 Javascript
vue实现简易的双向数据绑定
2020/12/29 Vue.js
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
Python快速从注释生成文档的方法
2016/12/26 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
python抽取指定url页面的title方法
2018/05/11 Python
python3爬虫之设计签名小程序
2018/06/19 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
内勤岗位职责
2015/02/10 职场文书
装修公司工程部经理岗位职责
2015/04/09 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang