UNPKG

rn-project

Version:

#### 项目介绍 类似一个脚手架的工具 此项目致力于构建一套基础,简单,可维护的 适配我司的react-native项目。可在此基础上搭建项目,封装了基础架构,基础组件,以及各种交互等;可快速进行项目搭建,开发。 # 涉及主要技术 - 1. 项目主要架构 * react native * react-navigation * redux

257 lines (253 loc) 6.82 kB
import React, { Component } from 'react'; import { Text, View, StyleSheet, Modal, TouchableOpacity } from 'react-native'; import PropTypes from 'prop-types'; import BaseStyle from '../constants/Style'; import ViewUtil from '../utils/View'; /** * 使用方法 * * <ModalDilog DilogModal={this.state.DilogModal3} type={'easy'} leftOPtion={() => this.setState({ DilogModal3: false })} rightOption={() => { this.setState({ DilogModal3: false }) toast("点击了确定") }} /> * * */ export default class DilogModal extends Component { static defaultProps = { text: '确定要执行操作吗?', leftText: '取消', rightText: '确定', leftTextColor: '#0894ec', rightTextColor: '#0894ec', btnNum: '2', btnText: '确定', btnColor: '#ffb910', animationType: 'fade', type: '', }; static propTypes = { DilogModal: PropTypes.bool, text: PropTypes.string, leftText: PropTypes.string, rightText: PropTypes.string, leftTextColor: PropTypes.string, rightTextColor: PropTypes.string, leftOPtion: PropTypes.func, rightOption: PropTypes.func, btnNum: PropTypes.string, //底部按钮数量 btnText: PropTypes.string, btnColor: PropTypes.string, btnOption: PropTypes.func, animationType: PropTypes.string, type: PropTypes.string, }; constructor(props) { super(props); this.state = {}; } componentDidMount() {} leftOPtion() { this.props.leftOPtion(); } rightOption() { this.props.rightOption(); } btnOption() { this.props.btnOption(); } render() { const { DilogModal, text, leftText, rightText, leftTextColor, rightTextColor, btnNum, btnText, btnColor, btnOption, animationType, type, } = this.props; let LC = leftTextColor ? { color: leftTextColor } : null; let RC = rightTextColor ? { color: rightTextColor } : null; let BC = btnColor ? { color: btnColor } : null; return ( <View> <Modal animationType={animationType} transparent={true} onRequestClose={() => {}} visible={DilogModal}> <View style={styles.modelView}> {type === 'easy' ? ( <View style={styles.dilogView}> <View style={styles.titleTextEasyView}> <Text style={[styles.topText]}>{text}</Text> </View> <View style={styles.buttonView}> <TouchableOpacity style={[styles.leftView, styles.lefteasy]} onPress={() => { this.leftOPtion(); }}> <Text style={[styles.easytextcolor, LC]}>{leftText}</Text> </TouchableOpacity> <TouchableOpacity style={[styles.rightView, styles.righteasy]} onPress={() => { this.rightOption(); }}> <Text style={[styles.easytextcolor, RC]}>{rightText}</Text> </TouchableOpacity> </View> </View> ) : btnNum + '' === '2' ? ( //显示两个按钮 否则显示一个按钮 <View style={styles.dilogMV}> <View style={styles.titleTextView}> <Text style={styles.topText}>{text}</Text> </View> <View style={styles.buttonView}> <TouchableOpacity style={styles.leftView} onPress={() => { this.leftOPtion(); }}> <Text style={[styles.leftText, LC]}>{leftText}</Text> </TouchableOpacity> <TouchableOpacity style={styles.rightView} onPress={() => { this.rightOption(); }}> <Text style={[styles.rightText, RC]}>{rightText}</Text> </TouchableOpacity> </View> </View> ) : ( <View style={styles.dilogMV}> <View style={styles.titleTextView}> <Text style={styles.topText}>{text}</Text> </View> <View style={styles.buttonView}> <TouchableOpacity style={styles.btnView} onPress={btnOption}> <Text style={[styles.btnText, BC]}>{btnText}</Text> </TouchableOpacity> </View> </View> )} </View> </Modal> </View> ); } } const styles = StyleSheet.create({ modelView: { flex: 1, backgroundColor: 'rgba(40,40,40,0.6)', ...BaseStyle.justifyContentCenter, ...BaseStyle.alignItemsCenter, }, dilogView: { backgroundColor: '#fff', width: ViewUtil.size.width - 80, height: 110, borderRadius: 10, }, dilogMV: { backgroundColor: '#fff', width: ViewUtil.size.width - 60, height: 160, borderRadius: 5, }, topText: { marginLeft: 10, marginRight: 10, fontSize: 15, lineHeight: 20, color: '#333333', }, titleTextEasyView: { ...BaseStyle.row, ...BaseStyle.justifyContentCenter, ...BaseStyle.alignItemsCenter, marginTop: 5, flex: 1, }, titleTextView: { ...BaseStyle.row, ...BaseStyle.justifyContentCenter, ...BaseStyle.alignItemsCenter, marginTop: 20, flex: 1, }, buttonView: { ...BaseStyle.row, ...BaseStyle.justifyContentBetween, ...BaseStyle.alignItemsCenter, borderTopWidth: 1, borderTopColor: '#dddddd', }, lefteasy: { paddingTop: 12, paddingBottom: 12, }, leftView: { ...BaseStyle.row, ...BaseStyle.alignItemsCenter, ...BaseStyle.justifyContentCenter, paddingTop: 20, paddingBottom: 20, flex: 1, borderRightWidth: 1, borderRightColor: '#dddddd', // backgroundColor:"red" }, righteasy: { paddingTop: 12, paddingBottom: 12, }, rightView: { ...BaseStyle.row, ...BaseStyle.alignItemsCenter, ...BaseStyle.justifyContentCenter, paddingTop: 20, paddingBottom: 20, flex: 1, }, easytextcolor: { fontSize: 16, color: '#0894ec', }, leftText: { fontSize: 16, color: '#333333', }, rightText: { fontSize: 16, color: '#ffb910', }, btnView: { ...BaseStyle.row, ...BaseStyle.alignItemsCenter, ...BaseStyle.justifyContentCenter, flex: 1, paddingBottom: 20, paddingTop: 20, }, btnText: { fontSize: 17, color: '#ffb910', }, });