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进行表单验证实例分析
Feb 10 Javascript
javascript实现动态改变层大小的方法
May 14 Javascript
jQuery基于扩展简单实现倒计时功能的方法
May 14 Javascript
第一次接触神奇的Bootstrap基础排版
Jul 26 Javascript
jQuery post数据至ashx实例详解
Nov 18 Javascript
smartupload实现文件上传时获取表单数据(推荐)
Dec 12 Javascript
js实现前端分页页码管理
Jan 06 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
Feb 27 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
Nov 01 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 jQuery
jQuery表单元素过滤选择器用法实例分析
Feb 20 jQuery
javascript的惯性运动实现代码实例
Sep 07 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实现基于pdo的事务处理方法示例
2017/07/21 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PHP实现正则匹配所有括号中的内容
2018/06/22 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
onkeypress字符按键兼容所有浏览器使用介绍
2013/04/24 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
采购内勤岗位职责
2013/12/10 职场文书
给分销商的致歉信
2014/01/14 职场文书
环境科学专业求职信
2014/08/04 职场文书
2014年学校教学工作总结
2014/12/06 职场文书
工作时间调整通知
2015/04/24 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
python绘制云雨图raincloud plot
2022/08/05 Python