UNPKG

rn-project

Version:

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

217 lines (209 loc) 5.43 kB
import React, { Component } from 'react'; import { Text, View, StyleSheet, Modal, TouchableOpacity, TextInput, Image, Alert, } from 'react-native'; import PropTypes from 'prop-types'; import BaseStyle from '../constants/Style'; /** * 使用方法 * * import ImageDilog from "../components/ImageDilog"; cancel() { this.setState({ DilogModal4: false, }) } confirm(imageCode) { this.setState({ DilogModal4: false, }) toast(`你输入的验证码为:${imageCode}`) } changeImage() { alert("更换了图片") } <ImageDilog DilogModal={this.state.DilogModal4} ImageUrl={`https://upload-images.jianshu.io/upload_images/4731495-b73e581098232f28.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240`} cancel={this.cancel.bind(this)} confirm={this.confirm.bind(this)} changeImage={this.changeImage.bind(this)} /> */ export default class ImageDilog extends Component { static propTypes = { DilogModal: PropTypes.bool, cancel: PropTypes.func, confirm: PropTypes.func, changeImage: PropTypes.func, base64Image: PropTypes.string, isBase64: PropTypes.bool, ImageUrl: PropTypes.string, }; constructor(props) { super(props); this.state = { imageCode: '', }; } componentDidMount() {} cancel() { this.props.cancel(); } confirm() { if (!this.state.imageCode) { Alert.alert('', '请输入图形验证码'); return false; } this.props.confirm(this.state.imageCode); } changeImage() { this.props.changeImage(); } render() { const { DilogModal, ImageUrl, isBase64 } = this.props; let baseImg = isBase64 ? `data:image/png;base64,${ImageUrl}` : ImageUrl; return ( <View> <Modal onRequestClose={() => {}} animationType={'slide'} transparent={true} visible={DilogModal}> <View style={styles.modelView}> <View style={styles.dailogView}> <View style={styles.topView}> <Text style={styles.topText}>请输入图形验证码</Text> <TouchableOpacity style={styles.imageTach} onPress={() => { this.cancel(); }}> {/* <Image style={styles.iamgeClose} source={require('../images/login/close.png')} /> */} </TouchableOpacity> </View> <View style={styles.inputView}> <TextInput style={styles.textInputStyle} underlineColorAndroid="transparent" // keyboardType="numeric" maxLength={6} placeholder="请输入图形验证码" placeholderTextColor="#cccccc" onChangeText={text => this.setState({ imageCode: text })} ref={c => { this.imageCode = c; }} /> <TouchableOpacity onPress={() => { this.changeImage(); }}> <Image style={styles.rightImage} source={{ uri: baseImg }} /> </TouchableOpacity> </View> <View style={styles.bottomTach}> <TouchableOpacity style={styles.tacItems} onPress={() => { this.cancel(); }}> <Text style={styles.topText}>取消</Text> </TouchableOpacity> <TouchableOpacity style={styles.tacItems} onPress={() => { this.confirm(); }}> <Text style={[styles.topText, styles.right]}>确定</Text> </TouchableOpacity> </View> </View> </View> </Modal> </View> ); } } const styles = StyleSheet.create({ modelView: { ...BaseStyle.justifyContentCenter, ...BaseStyle.alignItemsCenter, flex: 1, backgroundColor: 'rgba(40,40,40,0.6)', }, dailogView: { marginBottom: 60, width: 280, height: 175, borderRadius: 10, backgroundColor: '#ffffff', }, topView: { ...BaseStyle.row, ...BaseStyle.justifyContentCenter, marginTop: 20, }, topText: { fontSize: 17, color: '#333333', }, textInputStyle: { flex: 1, fontSize: 17, height: 40, padding: 0, }, inputView: { ...BaseStyle.row, ...BaseStyle.alignItemsCenter, marginTop: 22, marginBottom: 20, marginLeft: 20, marginRight: 20, paddingLeft: 10, width: 280 - 40, height: 40, borderBottomColor: '#fafafa', borderBottomWidth: 1, // backgroundColor:"red" }, rightImage: { width: 100, height: 40, resizeMode: 'stretch', }, bottomTach: { ...BaseStyle.row, ...BaseStyle.justifyContentCenter, position: 'absolute', bottom: 20, }, tacItems: { ...BaseStyle.justifyContentCenter, ...BaseStyle.alignItemsCenter, width: 280 / 2, }, right: { color: '#ffb910', }, imageTach: { position: 'absolute', right: 20, top: -6, }, // iamgeClose: { // width: 15, // height: 15, // }, });