在官网中使用列表组件是FlatList,具体的api使用可以自行去官网查看,本人是从android端转来的,熟悉android开发的在列表加载初期(网络请求开发时候),会出现loading页面,当数据加载成功的时候,有数据的时候会显示数据,数据为空时候显示NotDataView页面,当Error时候会出现请求出差页面,列表的下拉刷新使用的时候官网自带的RefreshControl(也可以自行去写动画)。
基础组件设计
ErrorView(数据加载出错),LoadingView(正在请求中),NotDataView(无数据),ListView(带有上述功能的组件),前三者可以根据自己项目的效果修改,在此我使用最简单的方式实现。
代码实现
ErrorView(非常简单的显示加载出差和重试功能)
|
|
LoadingView(正在加载中)
|
|
NotDataView(简单的不能再简单)
|
|
重头戏(ListView)
先上代码
|
|
从Props可以很明显的看出该组件的功能,dataSource(数据源),renderItem(渲染的Item),onFetchList(请求数据),isRefreshing(是否正在下拉刷新),loading(是否显示正在加载),loadMore(是否显示footer正在加载),hasMore(是否还有数据),error(是否加载出错),refreshColor(下拉刷新的颜色),backgroundColor(背景颜色),defaultPage(默认开始页码)。
接口设计
|
|
redux设计
项目中使用的是redux,我们中间件采用的是redux-promise-middleware(简单的来说就是把Promise的三种状态采用拼接的type的形式)。一般来说一个接口有请求开始,成功,失败。
handleReducer设计(对应Promise的三种状态)
|
|
pageReducer的设计(基本看代码都能看出来和ListView相对应)
|
|
使用
好比有个UserList页面
|
|
action很简单
|
|
reducers也很简单,不需要写任何其它纯函数
|
|
总结
通过这次的封装使我对redux, Typescript有更加深入的了解。代码地址