多平台统一管理软件接口,如何实现多平台统一管理软件接口
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} > <rvyUQ;/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} > <rvyUQ;/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}
>
<rvyUQ;/Placeholder.Paragraph>
}
}
四:还有Line(行布局),Media(图片布局),使用方法跟 三 一样。
完美收官!
项目demo地址:https://github.com/duheng/Mozi
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~