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 相关文章推荐
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
Apr 15 Javascript
js修改地址栏URL参数解决url参数问题
Dec 15 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
Jun 01 Javascript
jquery用offset()方法获得元素的xy坐标
Sep 06 Javascript
jQuery中append()方法用法实例
Jan 08 Javascript
JS实现的3D拖拽翻页效果代码
Oct 31 Javascript
win7下安装配置node.js+express开发环境
Dec 06 Javascript
JavaScript简单获取页面图片原始尺寸的方法
Jun 21 Javascript
JavaScript实现Java中Map容器的方法
Oct 09 Javascript
Javascript数组方法reduce的妙用之处分享
Jun 10 Javascript
使用vue实现通过变量动态拼接url
Jul 22 Javascript
js仿京东放大镜效果
Aug 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
PHP4实际应用经验篇(2)
2006/10/09 PHP
PHP静态新闻列表自动生成代码
2007/06/14 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
潜说js对象和数组
2011/05/25 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
AngularJS单选框及多选框实现双向动态绑定
2016/01/13 Javascript
jQuery设置图片等比例缩小的方法
2017/04/29 jQuery
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
在vue-cli中引入lodash.js并使用详解
2019/11/13 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
2020/03/25 Javascript
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
python 随机数生成的代码的详细分析
2011/05/15 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
详解python UDP 编程
2020/08/24 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
美国休闲服装品牌:Express
2016/09/24 全球购物
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
机电一体化自荐信
2013/12/10 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
社团个人总结范文
2015/03/05 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
浅谈Python魔法方法
2021/06/28 Java/Android
python ConfigParser库的使用及遇到的坑
2022/02/12 Python