# rn-ui
**Repository Path**: wuye_666/rn-ui
## Basic Information
- **Project Name**: rn-ui
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-08-08
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# react-native-ui
#### 项目介绍
react-native 基础ui
#### 软件架构
##### Constant:基础常量设置
##### Utils:工具类
##### fetch:fetch请求
##### Request:fetch请求基础封装
##### Loading:圆形加载
##### Toast:提示
##### Overlay:遮罩层
##### Text:文字
##### NetWorkView:网络加载view
##### Dialog:弹出框
##### Modal:modal层
##### RefreshFlatList:带下拉刷新和上拉加载的flatlist
#### 安装教程
##### yarn add react-native-animatable
##### yarn add react-native-root-siblings
##### yarn add https://gitee.com/ntsaas/react-native-ui.git
#### 使用说明
`import {
Constant,
Utils,
fetch,
Request,
Loading,
Toast,
Overlay,
Text,
NetWorkView,
Dialog,
Modal,
RefreshFlatList
} from 'react-native-ui';`
##### Constant
###### 1.代码:
`Constant.allowFontScaling //控制字体是否要根据系统的“字体大小”辅助选项来进行缩放`
`Constant.androidHeaderHeight //安卓头部高度,不包含状态栏,安卓的状态栏translucent属性设为true`
`Constant.androidBarHeight //安卓状态栏高度`
`Constant.iosHeaderHeight //ios头部高度,不包括iphoneX`
`Constant.iosBarHeight //ios状态栏高度,不包括iphoneX`
`Constant.iphoneXHeaderHeight //iphoneX头部高度`
`Constant.iphoneXBarHeight //iphoneX状态栏高度`
##### Utils
###### 1.代码:
`Utils.isIphoneX() //判断是否为iphoneX`
`Utils.isAndroid() //是否是安卓`
`Utils.isIos() //是否是ios`
`Utils.getHeaderHeight() //获取头部高度,包含状态栏高度`
`Utils.getBarHeight() //获取状态栏高度`
`Utils.getScreenWight() //获取屏幕宽度`
`Utils.getScreenHeight() //获取屏幕高度`
`Utils.getNowTime() //获取当前时间`
##### fetch
###### 1.代码:
fetch(url,{method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify(params),},tag)
.then((response) => {
if(response.ok){
return response.json();
}
}).then((json) => {
console.log(json);
}).catch((err) => {
console.log(err);
}).done();
fetch.abort(tag); //取消请求`
##### Request
###### 1.代码:
`Request.post(url,params,tag) //发送一个post请求,返回一个Promise`
`Request.get(url,params,tag) //发送一个get请求,返回一个Promise`
`Request.cancel(tag) //取消一个请求`
`Request.postWithLoading(url,params,timeout,tag,option) //带loading的post请求`
`Request.getWithLoading(url,params,timeout,tag,option) //带loading的get请求`
###### 2.Props:
* url: 请求地址
* params: 请求参数
* tag:标志位,可直接传入this或者自定义的唯一值
* timeout:请求超时时间
* option:
- loadingMsg: 正在请求时loaing中的文字
- errMsg:请求失败显示的文字
- overTimeMsg:请求超时显示的文字
- loadingOption:loading的样式参数,详见[Loading](https://gitee.com/wuye_666/react-native-ui#loading)
##### Loading
###### 1.代码:
`Loading.show(option) //显示一个loading`
`Loading.hide() //关闭一个loading`
###### 2. option:
* style: PropTypes.object,//加载层样式
* loadingColor: PropTypes.string,//loading颜色,最后加载完成后的提示字体颜色会跟随
* loadingSize: PropTypes.oneOf(['small', 'large']),//loading的大小
* loadingText: PropTypes.string,//加载文字
* textStyle: PropTypes.object,//加载文字样式
* backHandler: PropType.bool, //安卓返回键是否可以取消,默认true
* isCancel: PropType.bool, // 点击是否关闭,默认关闭
* opacity: PropType.number, //最大透明度,默认0.6
* backgroundColor: PropType.string,
* onShow: PropType.func,//显示成功后的回调
* onHidden: PropType.func,//关闭成功后的回调
##### Toast
###### 1.代码:
`Toast.show(option) //显示一个Toast`
`Toast.hide() //关闭一个Toast`
###### 2. option:
* message: PropTypes.string, 显示的文字
* onShow: PropTypes.func,//显示成功后的回调
* onHidden: PropTypes.func, // 关闭成功后的回调
* barStyle: PropTypes.oneOf(['default','light-content','dark-content']),
* backgroundColor: PropTypes.string, //背景颜色
* messageStyle: PropTypes.object,//文字样式
* timeStyle: PropTypes.object,//时间样式
* message: PropTypes.string.isRequired,//显示的文字
* duration: PropTypes.number, //过几秒后关闭 为0时需要手动关闭
##### Overlay
###### 1.代码:
`Overlay.show(option) //显示一个Overlay`
`Overlay.hide() //关闭一个Overlay`
###### 2.option:
* backHandler: PropType.bool, //安卓返回键是否可以取消,默认true
* isCancel: PropType.bool, // 点击是否关闭,默认关闭
* opacity: PropType.number, //最大透明度,默认0.6
* backgroundColor: PropType.string,
* onShow: PropType.func,//显示成功后的回调
* onHidden: PropType.func,//关闭成功后的回调
##### Text
###### 1.代码:
`这是一个text`
###### 2.Props: [同官方Text,只是统一设置了allowFontScaling](https://facebook.github.io/react-native/docs/text.html)
##### NetWorkView
###### 1.代码:
this.renderContent(value)}>
renderContent(value){
return(
{value.RecordDetail[0].UserName}
)
}
###### 2.Props
* url: PropTypes.string.isRequired,//请求url
* params: PropTypes.object,//请求参数
* style: PropTypes.object,//最外层样式
* loadingType: PropTypes.oneOf(['loading','refresh']),//loading:页面中间转圈,refresh: 下拉刷新
* loadingColor: PropTypes.string,//loading颜色,最后加载完成后的提示字体颜色会跟随
* loadingSize: PropTypes.oneOf(['small', 'large']),//loading的大小
* refreshColor: PropTypes.string,//下拉刷新控件颜色
* refreshTitle: PropTypes.string,//下拉刷新控件标题,仅ios
* renderContent: PropTypes.func.isRequired,//加载成功后的内容
* timeout: PropTypes.number,//超时时间
* loadingText: PropTypes.string,//加载时的显示文字
* errorText: PropTypes.string,//加载出错后的显示文字
* overTimeText: PropTypes.string,//超时后的显示文字
* textStyle: PropTypes.object//加载文字样式
##### Dialog
###### 1.代码:
`Dialog.show(option) //显示一个Dialog`
`Dialog.hide() //关闭一个Dialog`
###### 2.option
* style: PropTypes.object,//整体样式
* title: PropTypes.string,//标题
* headerStyle: PropTypes.object,//标题样式
* buttons: PropTypes.array,//按钮
* pressHide: PropTypes.bool,//按钮点击后是否关闭dialog,默认true
* vertical: PropTypes.bool,//是否竖向排列button,默认否
* overlayBackgroundColor: PropTypes.string,//遮罩层背景色
* overlayOpacity: PropTypes.number,//遮罩层透明度 0-1
* overlayAnimationIn: PropTypes.string,//遮罩层进入动画,默认淡入
* overlayAnimationOut: PropTypes.string,//遮罩层退出通话,默认淡出
* dialogAnimationIn: PropTypes.string,//dialog进入动画,默认放大
* dialogAnimationOut: PropTypes.string,//dialog退出动画,默认缩小
* duration: PropTypes.number,//动画持续时间,毫秒
* backHandler: PropTypes.bool,//点击遮罩层是否退出,android中包含物理返回键,默认为true
* onShow: PropTypes.func, //显示完成后的回调
* onHidden: PropTypes.func, //关闭完成后的回调
* onButtonPress: PropTypes.func,//按钮点击后的回调
##### Modal
###### 1.代码:
`Modal.show(option) //显示一个Modal`
`Modal.hide() //关闭一个Modal`
###### 2.option
* top: PropTypes.bool, //是否从顶部出现,默认false
* height: PropTypes.number,//modal的高度,默认当前屏幕的一半
* overlayOpacity: PropTypes.number,//遮罩层的透明度
* backgroundColor: PropTypes.string,//modal背景色,默认白色
* duration: PropTypes.number,//动画持续时间,毫秒
* backHandler: PropTypes.bool,//点击遮罩层是否退出,android中包含物理返回键,默认为true
* onShow: PropTypes.func, //显示完成后的回调
* onHidden: PropTypes.func, //关闭完成后的回调
##### RefreshFlatList
###### 1.代码:
render(){
return (
this.getPage(page)}
tidyData={(data)=> this.tidyData(data)}
keyExtractor={(item,index)=> 'notice'+index}
params={{
obj: JSON.stringify(
{
"UserID": 'Admin',
"PageIndex": this.state.page,
"PageSize": "15",
"Type": "2"
}
)
}}
pageSize={15}
renderItem={(info)=> this.renderItem(info)}
/>
);
}
getPage(page){
this.setState({page: page});
}
tidyData(data){
return data.RecordDetail[0];
}
renderItem({item,index}){
return (
{item.Name}
);
}
###### 2.Props:
* url: PropTypes.string, //请求地址
* params: PropTypes.object,//请求参数
* method: PropTypes.oneOf(['post','get']),//请求方式
* timeout: PropTypes.number,
* pageSize: PropTypes.number,//每页行数,默认15
* renderItem: PropTypes.func,//每行组件
* getPage: PropTypes.func,//获取下一页的页数
* tidyData: PropTypes.func,//整理数据,返回整理后的数据
* listRef: PropTypes.func,//list的ref
* footerContainerStyle: View.propTypes.style,//footer组件的样式
* footerTextStyle: View.propTypes.style,//底部组件text的样式
* footerRefreshingText: PropTypes.string,//加载更多的文字
* footerFailureText: PropTypes.string,//加载失败的文字
* footerNoMoreDataText: PropTypes.string,//没有更多数据的文字
* footerEmptyDataText: PropTypes.string,//空数据的文字
* footerOverTimeText: PropTypes.string,//超时文字