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 位置插件
Dec 25 Javascript
用Javascript同时提交多个Web表单的方法
Dec 26 Javascript
JS小功能(button选择颜色)简单实例
Nov 29 Javascript
jquery 操作css样式、位置、尺寸方法汇总
Nov 28 Javascript
Javascript实现多彩雪花从天降散落效果的方法
Feb 02 Javascript
微信小程序 实战程序简易新闻的制作
Jan 09 Javascript
JSON与JS对象的区别与对比
Mar 01 Javascript
利用Console来Debug的10个高级技巧汇总
Mar 26 Javascript
修改vue+webpack run build的路径方法
Sep 01 Javascript
服务端预渲染之Nuxt(使用篇)
Apr 08 Javascript
自定义Vue中的v-module双向绑定的实现
Apr 17 Javascript
koa2+vue实现登陆及登录状态判断
Aug 15 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
php操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
codeigniter框架批量插入数据
2014/01/09 PHP
php实现telnet功能示例
2014/04/08 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
php中memcache 基本操作实例
2015/05/17 PHP
用js实现的抽象CSS圆角效果!!
2007/05/03 Javascript
jquery 新浪网易的评论块制作
2010/07/01 Javascript
再论Javascript下字符串连接的性能
2011/03/05 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
Python3获取cookie常用三种方案
2020/10/05 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
想学画画?python满足你!
2020/12/24 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
日本乐天官方海外转运服务:Rakuten Global Express
2018/11/30 全球购物
一套VC试题
2015/01/23 面试题
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
搞笑创意广告语
2014/03/17 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
学校2014年度工作总结
2014/12/06 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
python 如何在 Matplotlib 中绘制垂直线
2021/04/02 Python
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js
Java线程的6种状态与生命周期
2022/05/11 Java/Android