0.0.3 • Published 7 years ago
nuke-biz-list v0.0.3
list
- category: BizComponent
- chinese: nuke-biz-list的作用是,封装了下拉刷新,加载更多等功能,只需要传 "请求数据的方法" 和 "渲染列表的方法",就可以实现列表的展示、刷新、加载更多,为空及错误页面的展示。
- type: 业务组件
属性
参数 | 说明 | 类型 | 默认值 | 是否必传 |
---|---|---|---|---|
getListByPage | 获取列表数据 (currentPage: number) => Promise | Function | 无 | 是 |
renderItem | listView renderRow调用的方法 | Function | 无 | 是 |
showRefresh | 是否展示 refresh(包括在默认Empty视图是否显示刷新按钮) | boolean | true | 否 |
renderHeader | 渲染header(与默认的refresh二选一) | Function | 端上统一的refresh | 否 |
renderFooter | 渲染footer | Function | 列表加载信息提示 | 否 |
showError | 是否展示Error页面 | boolean | true | 否 |
renderError | 渲染Error页面(如果不设置,则使用默认错误页面) | Function | 无 | 否 |
onError | 页面出错时触发 | Function | 无 | 否 |
showEmpty | 是否展示Empty页面 | boolean | true | 否 |
emptyText | 采用默认空页面时,展示的文案 | string | '没有更多内容了~' | 否 |
renderEmpty | 渲染Empty页面(如果不设置,则使用默认空页面) | Function | 无 | 否 |
showLoadEndCount | 当item数量超过这个值时, 才会展示 加载完的提示 | number | 1 | 否 |
footerStyle | 设置底部样式 | object | 与端底部"加载更多" 样式规范统一 | 否 |
style | list的样式 | object | 与端 "列表" 样式规范统一 | 否 |
onEndReachedThreshold | 距离多少开始加载下一屏,数字单位默认 rem | Number | 500 | 否 |
列表数据格式
对于返回的列表数据格式有要求
1. data字段 (必须)
2. currentPage字段,当前页面 (必须)
3. hasMore字段,是否还有数据 (必须)
4. list字段,列表数组 (必须)
{
"data": {
"currentPage": 1,
"pageSize": 20,
"hasMore": true,
"list": [{
"name": "jack"
}, {
"name": "jack"
}, {
"name": "jack"
}, {
"name": "jack"
}, {
"name": "jack"
}]
}
}
使用方式
- 初次使用需要安装依赖:
tnpm install nuke-biz-list
- 通过import引用
import {createElement, Component,render } from 'rax';
import {View,Text,Page} from 'nuke';
import List from 'nuke-biz-list'
let App = class NukeDemoIndex extends Component {
constructor() {
super();
this.getData = this.getData.bind(this);
this.renderItem = this.renderItem.bind(this);
}
getData(currentPage) {
return new Promise((resolve, reject) => {
/*
return reject({
msg: '出错啦~出错咯~出错啊~',
});
*/
setTimeout(() => {
const resp = {
data: {
currentPage: currentPage,
pageSize: 5,
hasMore: currentPage <= 3,
list: [{
name: 'jack',
}, {
name: 'jack',
}, {
name: 'jack',
}, {
name: 'jack',
}, {
name: 'jack',
}]
}
};
/*
if (currentPage === 2) {
return reject({
msg: '出错啦~出错咯~出错啊~',
});
}
*/
resolve (resp);
}, 500);
})
}
renderItem(item, index) {
return (
<View style={styles.item}>
<Text style={styles.label}>这里第{index+1}条记录: </Text>
<Text style={styles.name}>his name is: {item.name}</Text>
</View>
);
}
render() {
const listProps = {
getListByPage: this.getData,
renderItem: this.renderItem,
showLoadEndCount: 5,
};
return (
<View style={styles.container}>
<Text style={[styles.pageInfo, styles.label]} >nuke-biz-list的demo</Text>
<List {...listProps} />
</View>
);
}
}
const styles = {
pageInfo: {
width: 750,
padding: 30,
fontSize: 36,
fontColor: '#3d4145',
backgroundColor: '#999',
},
container: {
display: 'flex',
flex: 1,
},
item: {
flex: 1,
marginLeft: 30,
marginRight: 30,
paddingTop: 30,
paddingBottom: 30,
borderBottomType: 'solid',
borderBottomColor: '#DCDEE3',
borderBottomWidth: 1,
},
label: {
fontSize: 28,
fontColor: '#c4c6cf',
},
name: {
fontSize: 28,
fontColor: '#3d4145',
paddingLeft: 60,
marginTop: 20,
},
}
render(<App/>);
0.0.3
7 years ago