React Native预设占位placeholder的使用

网友投稿 318 2023-03-29


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 { loadihttp://ng } = this.props;

return (

ParagraphLength={4} // 要渲染的条数

isLoading={loading} // loading状态

hasTitle // 是否需要title

list={this.sectionList} // 这就是SectionList的函数

/>

);

}

}

注:ListParagraph组件目前在我开源项目中,还没有添加到npm,有需要的到我项目中拿,项目地址在文章末http://尾

二:左图右内容布局

import Placeholder from 'rn-placeholder';

export default class Cheng extends Component {

render() {

return

hasRadius //左边的方块是否需要圆角

size={60} // 大小

animate="fade" // 动画方式

lineNumber={4} // 右边的线显示的数量

lineSpacing={5} // 行间距的距离

firstLineWidth=90% // 第一行的宽度

lastLineWidth="70%" // 最后一行的宽度

onReady={this.state.isReady} // 内容是否加载完毕,如果加载完毕会切换到你的真实内容布局

>

左图右内容布局

}

}

三:段落布局

import Placeholder from 'rn-placeholder';

export default class Cheng extends Component {

render() {

return

size={60}

animate="fade"

lineNumber={4}

lhttp://ineSpacing={5}

lastLineWidth="30%"

onReady={this.state.isReady}

>

段落布局

&ltrvyUQ;/Placeholder.Paragraph>

}

}

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

完美收官!

项目demo地址:https://github.com/duheng/Mozi

ParagraphLength={4} // 要渲染的条数

isLoading={loading} // loading状态

hasTitle // 是否需要title

list={this.sectionList} // 这就是SectionList的函数

/>

);

}

}

注:ListParagraph组件目前在我开源项目中,还没有添加到npm,有需要的到我项目中拿,项目地址在文章末http://尾

二:左图右内容布局

import Placeholder from 'rn-placeholder';

export default class Cheng extends Component {

render() {

return

hasRadius //左边的方块是否需要圆角

size={60} // 大小

animate="fade" // 动画方式

lineNumber={4} // 右边的线显示的数量

lineSpacing={5} // 行间距的距离

firstLineWidth=90% // 第一行的宽度

lastLineWidth="70%" // 最后一行的宽度

onReady={this.state.isReady} // 内容是否加载完毕,如果加载完毕会切换到你的真实内容布局

>

左图右内容布局

hasRadius //左边的方块是否需要圆角

size={60} // 大小

animate="fade" // 动画方式

lineNumber={4} // 右边的线显示的数量

lineSpacing={5} // 行间距的距离

firstLineWidth=90% // 第一行的宽度

lastLineWidth="70%" // 最后一行的宽度

onReady={this.state.isReady} // 内容是否加载完毕,如果加载完毕会切换到你的真实内容布局

>

左图右内容布局

}

}

三:段落布局

import Placeholder from 'rn-placeholder';

export default class Cheng extends Component {

render() {

return

size={60}

animate="fade"

lineNumber={4}

lhttp://ineSpacing={5}

lastLineWidth="30%"

onReady={this.state.isReady}

>

段落布局

&ltrvyUQ;/Placeholder.Paragraph>

}

}

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

完美收官!

项目demo地址:https://github.com/duheng/Mozi

size={60}

animate="fade"

lineNumber={4}

lhttp://ineSpacing={5}

lastLineWidth="30%"

onReady={this.state.isReady}

>

段落布局

&ltrvyUQ;/Placeholder.Paragraph>

}

}

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

完美收官!

项目demo地址:https://github.com/duheng/Mozi


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java运行环境搭建的图文教程
下一篇:RateLimiter 源码分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~