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知识点之&quot;this指针&quot;的应用
Apr 23 Javascript
AngularJS+Node.js实现在线聊天室
Aug 28 Javascript
JS验证邮件地址格式方法小结
Dec 01 Javascript
jQuery html表格排序插件tablesorter使用方法详解
Feb 10 Javascript
关于Bootstrap按钮组件消除黄框的方法
May 19 Javascript
JavaScript模块模式实例详解
Oct 25 Javascript
微信小程序云开发使用方法新手初体验
May 16 Javascript
js实现无缝滚动双图切换效果
Jul 09 Javascript
layui table去掉右侧滑动条的实现方法
Sep 05 Javascript
微信小程序和H5页面间相互跳转代码实例
Sep 19 Javascript
详解Vue的watch中的immediate与watch是什么意思
Dec 30 Javascript
js实现无缝轮播图
Mar 09 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显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
php+mysql实现无限分类实例详解
2015/01/15 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
深入理解javascript变量声明
2014/11/20 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
tornado框架blog模块分析与使用
2013/11/21 Python
python中日期和时间格式化输出的方法小结
2015/03/19 Python
python输出指定月份日历的方法
2015/04/23 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
python多线程使用方法实例详解
2019/12/30 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
Structs界面控制层技术
2013/10/11 面试题
公司承诺书怎么写
2014/05/24 职场文书
新郎新娘答谢词
2015/01/04 职场文书
矛盾论读书笔记
2015/06/29 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS