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 相关文章推荐
一页面多XMLHttpRequest对象
Jan 22 Javascript
跟着JQuery API学Jquery 之二 属性
Apr 09 Javascript
拉动滚动条加载数据的jquery代码
May 03 Javascript
JS计算网页停留时间代码
Apr 28 Javascript
Javascript玩转继承(二)
May 08 Javascript
node.js读取文件到字符串的方法
Jun 29 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
Aug 11 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
Aug 09 Javascript
微信小程序request请求后台接口php的实例详解
Sep 20 Javascript
jquery中done和then的区别(详解)
Dec 19 jQuery
解决vue 表格table列求和的问题
Nov 06 Javascript
Vue实现跑马灯样式文字横向滚动
Nov 23 Vue.js
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
PHP form 表单传参明细研究
2009/07/17 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
Extjs学习笔记之六 面版
2010/01/08 Javascript
javascript forEach通用循环遍历方法
2010/10/11 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
详解JavaScript 中的批处理和缓存
2020/11/19 Javascript
python3爬虫之设计签名小程序
2018/06/19 Python
python中的单引号双引号区别知识点总结
2019/06/23 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
行政助理的职责
2013/11/14 职场文书
员工薪酬福利制度
2014/01/17 职场文书
北体毕业生求职信
2014/02/28 职场文书
《一个小村庄的故事》教学反思
2014/04/13 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
个人党性锻炼总结
2015/03/05 职场文书
2016国培研修心得体会
2016/01/08 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js