UNPKG

react-native-lib-cus-com

Version:

react-native 自定义辅助组件库,完美的网路请求,带加载条,可上传、下载文件,等等多种ui,可自定义删除;可节省应用级软件的开发时间

114 lines (97 loc) 3.5 kB
import React, {Component} from 'react'; import PropTypes from 'prop-types'; import { View, TextInput, Text, } from 'react-native'; import { StyleSheetAdapt, Theme, } from './../api/api'; /** * 带文字label 的输入框的输入框 控件 */ export class TextInputLabel extends Component { //属性注释及类型,所有的属性对象都是句柄模式(类型时number),类似C语言中的指针 static propTypes = { frameStyle:PropTypes.oneOfType([ PropTypes.number, PropTypes.object, PropTypes.array ]),//外部框样式 textLabel:PropTypes.string,//标识文本 textLabelStyle:PropTypes.oneOfType([ PropTypes.number, PropTypes.object, PropTypes.array ]),//标识文本样式 textLabelFrameStyle:PropTypes.oneOfType([ PropTypes.number, PropTypes.object, PropTypes.array ]),//标识文本框样式 textInputProps:PropTypes.object,//输入框属性 TextInput的各种属性 json textInputFrameStyle:PropTypes.oneOfType([ PropTypes.number, PropTypes.object, PropTypes.array ]),//输入框外框样式 viewUI:PropTypes.element,//下边/右边UI labelUI:PropTypes.element,//上边/左边UI }; /** * 设置默认属性 * **/ static defaultProps = { }; render() { const {frameStyle,textLabel,textLabelStyle,textInputProps, textLabelFrameStyle,textInputFrameStyle,viewUI,labelUI} = this.props; return ( //style={this.props.inputStyles.inputRowStyle} <View style={frameStyle} > <View style={[styles.textFrame,textLabelFrameStyle]}> { labelUI && labelUI || <Text style={[styles.textLabelStyle,textLabelStyle]}> {textLabel} </Text> } </View> <View style={[styles.textFrame,textInputFrameStyle]}> { viewUI&&viewUI || <TextInput {...textInputProps} multiline = { textInputProps ? textInputProps.multiline !== undefined ? textInputProps.multiline : true : true } style={[styles.textInputStyle,textInputProps ? textInputProps.style : {}]} underlineColorAndroid='rgba(0,0,0,0)'/> } </View> </View> ); } } const styles = StyleSheetAdapt.create({ textInputStyle:{ borderColor:Theme.Colors.minorColor, borderWidth:Theme.Border.borderWidth, width:'0.9w', height:200, borderRadius:Theme.Border.borderRadius, fontSize:Theme.Font.fontSize_1, padding:5, }, textLabelStyle:{ fontSize:Theme.Font.fontSize }, textFrame:{ margin:10, }, });