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 相关文章推荐
js 浏览器事件介绍
Mar 30 Javascript
解决JavaScript数字精度丢失问题的方法
Dec 03 Javascript
easyui combobox开启搜索自动完成功能的实例代码
Nov 08 Javascript
详解javascript表单的Ajax提交插件的使用
Dec 29 Javascript
AngularJs实现聊天列表实时刷新功能
Jun 15 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
Nov 28 Javascript
Vue组件和Route的生命周期实例详解
Feb 10 Javascript
JavaScript继承定义与用法实践分析
May 28 Javascript
JavaScript选择排序算法原理与实现方法示例
Aug 06 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
Jun 05 Javascript
uin-app+mockjs实现本地数据模拟
Aug 26 Javascript
Jquery+javascript实现支付网页数字键盘
Dec 21 jQuery
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
拼音码表的生成
2006/10/09 PHP
PHP CKEditor 上传图片实现代码
2009/11/06 PHP
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
获取URL文件名后缀
2013/10/24 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
jQuery学习笔记之Helloworld
2010/12/22 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
使用vue-router为每个路由配置各自的title
2018/07/30 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
Python赋值语句后逗号的作用分析
2015/06/08 Python
python实现的多线程端口扫描功能示例
2017/01/21 Python
浅谈python中的__init__、__new__和__call__方法
2017/07/18 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
python 构造三维全零数组的方法
2018/11/12 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
python实现加密的方式总结
2020/01/19 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
英语求职信范文
2014/05/23 职场文书
酒后驾车标语
2014/06/30 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
MySQL系列之十二 备份与恢复
2021/07/02 MySQL
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android