React Native预设占位布局placeholder

当我们首次打开一个app的时候会请求接口获取数据,那么获取数据的这段时间展示什么给用户呢?国内很多app都是千篇一律的用一个菊花代替(俗称loading),或者更有心一点的做一个好看一点的loading,但是这样当拿到数据渲染页面的时候会很生硬的切换,总感觉很low。

facebook首页列表是用一个接近真实布局的骨架动画来代替loading,这东西可以称之为skeleton screen或者placeholder,但是翻译过来真不知道该翻译成什么合适,这么做的好处就是在内容加载完成后可以做到流畅无缝切换真实布局,细节决定产品的质量,我觉得facebook对用户体验,交互的细节做的挺不错。先上一张我的fb截图。

rn-placeholder是rn版本的placeholder,我在次基础上做了对flastlist,listview,SectionList的适配封装。先看一下在我的开源项目中的效果:

看完上面的效果是不是感觉比传统的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
        size={60}
        animate="fade"
        lineNumber={4}
        lineSpacing={5}
        lastLineWidth="70%"
        onReady={this.state.isReady}
      >
        <Text>左图右内容布局</Text>
      </Placeholder.ImageContent>
    }   
 }复制代码

三:段落布局

 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>
    }   
 }复制代码

四:还有Line(行布局),Media(图片布局),使用方法跟 三 一样。

完美收官!
项目demo地址:github.com/duheng/Mozi
THE END!

转载于:https://juejin.im/post/59c8ee44f265da065476dfe5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值