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判断DOM何时加载完毕的技巧
Nov 11 Javascript
JQuery设置和去除disabled属性的5种方法总结
May 16 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
Mar 08 Javascript
Wireshark基本介绍和学习TCP三次握手
Aug 15 Javascript
第一次记录Bootstrap table学习笔记(1)
May 18 Javascript
基于Vue实例对象的数据选项
Aug 09 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
Jan 13 Javascript
jquery的 filter()方法使用教程
Mar 22 jQuery
js布局实现单选按钮控件
Jan 17 Javascript
vue中 v-for循环的用法详解
Feb 19 Javascript
js简单粗暴的发布订阅示例代码
Jan 23 Javascript
Vue详细的入门笔记
May 10 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调用MySQL的存储过程的实现代码
2008/08/12 PHP
php5 图片验证码实现代码
2009/12/11 PHP
PHP多线程抓取网页实现代码
2010/07/22 PHP
php获取用户IPv4或IPv6地址的代码
2012/11/15 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
jQuery boxy弹出层插件中文演示及使用讲解
2011/02/24 Javascript
JS cookie中文乱码解决方法
2014/01/28 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
JavaScript运行机制实例分析
2020/04/11 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
详谈python http长连接客户端
2017/06/12 Python
Django自定义用户认证示例详解
2018/03/14 Python
python简单商城购物车实例代码
2018/03/15 Python
在Python中增加和插入元素的示例
2018/11/01 Python
python可视化实现代码
2019/01/15 Python
Django 大文件下载实现过程解析
2019/08/01 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
自动化系在校本科生求职信
2013/10/23 职场文书
个人买房协议书范本
2014/10/06 职场文书
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android