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 相关文章推荐
CLASS_CONFUSION JS混淆 全源码
Dec 12 Javascript
日历查询的算法 如何计算某一天是星期几
Dec 12 Javascript
基于jQuery.Validate验证库知识点的详解
Apr 26 Javascript
让IE8浏览器支持function.bind()方法
Oct 16 Javascript
Javascript 制作图形验证码实例详解
Dec 22 Javascript
基于Bootstrap框架实现图片切换
Mar 10 Javascript
React.js绑定this的5种方法(小结)
Jun 05 Javascript
利用Decorator如何控制Koa路由详解
Jun 26 Javascript
简单说说angular.json文件的使用
Oct 29 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
Mar 16 Javascript
Vue实现仿iPhone悬浮球的示例代码
Mar 13 Javascript
输入框跟随文字内容适配宽实现示例
Aug 14 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
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
php cookie工作原理与实例详解
2016/07/18 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
php微信开发之关注事件
2018/06/14 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
PHP7 windows支持
2021/03/09 PHP
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
微信小程序分页加载的实例代码
2017/07/11 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
vue自定义树状结构图的实现方法
2020/10/18 Javascript
python抓取网页内容示例分享
2014/02/24 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
python中Apriori算法实现讲解
2017/12/10 Python
详解Python传入参数的几种方法
2019/05/16 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
哪些是python中web开发框架
2020/06/17 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
三星印度官网:Samsung印度
2019/08/03 全球购物
扬尘污染防治方案
2014/06/15 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
企业开发CSS命名BEM代码规范实践
2022/02/12 HTML / CSS