react-native--万能Button封装

Posted time_iter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react-native--万能Button封装相关的知识,希望对你有一定的参考价值。

导语:在日常开发中,我们经常需要用过按钮,比如:提交,确认,登录。
其中,大部分的按钮都有如下需求:
1-:点击与不可点击时背景颜色
2-:文案大小,字体颜色
3-:圆角,边框颜色

一:案例:
-1:props传递文案
-2:props传递是否可点击
-3:默认提供样式,样式可修改

import React, 
    Component
 from 'react'

import 
    StyleSheet,
    View,
    Text,
    TouchableOpacity,
 from 'react-native'

export default class ConfirmButton extends Component 
    //使用时:enable是必须存在的
    static propTypes = 
        enable: React.PropTypes.bool.isRequired,
    ;

    render() 
        return (
            <View>
                this._renderButton()
            </View>
        );
    

    _renderButton() 
        //可点击与不点击样式不同
        if (this.props.enable===true) 
            return(
                <TouchableOpacity
                    onPress=this.props.onPress
                    //this.props.buttonStyle传入此样式属性,修改背景色,边框大小,颜色
                    style=[styles.button, this.props.buttonStyle]>
                    <View style=styles.viewText>
                       //this.props.textStyle传入此样式属性,修改字体大小,颜色
                        <Text style=[styles.textMeg, this.props.textStyle]>this.props.text</Text>
                    </View>
                </TouchableOpacity>
            );
         else 
            return(
                <View style=[styles.button, this.props.buttonStyle, styles.buttonNotEnable]>
                    <View style=styles.viewText>
                    //this.props.text传入此属性,可以动态修改文字
                        <Text style=styles.textMeg>this.props.text</Text>
                    </View>
                </View>
            );
        
    



const styles = StyleSheet.create(
    viewText: 
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
    ,
    textMeg: 
        color: 'white',
        fontSize: 15,
    ,
    button: 
        height: 44,
        borderRadius: 5,
        backgroundColor: 'red',
        justifyContent: 'center',
        alignItems: 'center'
    ,
    buttonNotEnable: 
        backgroundColor: '#B8B8B8',
    
);

二:使用:

import React,Component from 'react'
import 
    StyleSheet,
    View,
 from 'react-native'

import ConfirmButton from './ConfirmButton'


export  default class ActionCustom extends Component
    constructor(props)
        super(props);
        this.state=
            click:false,
        
    

    render()
        return(
            <View>
                <ConfirmButton
                text='Frist'
                enable=true
                onPress=this.alertMsg/>

                <ConfirmButton
                    enable=this.state.click
                    text='enable'/>

                <ConfirmButton
                    enable=true
                    textStyle=styles.textStyle
                    text='Sencond'
                    buttonStyle=styles.container
                    onPress=this.changeState/>
            </View>
        );
    

    alertMsg=()=>
        alert("alertMsginInfo");
    


    changeState=()=>
     this.setState(
         click:true,
     )
    



const styles=StyleSheet.create(
    container:
        margin:20,
        backgroundColor:'white',
        borderColor:'red',
        borderRadius:5,
        borderWidth:2,
    ,
    textStyle:
        color:'red',
        fontSize:20,
    

);

以上是关于react-native--万能Button封装的主要内容,如果未能解决你的问题,请参考以下文章

IDEA万能快捷键,你不知道的17个实用技巧!!!

react-native组件封装与传值

PHP学习笔记:万能随机字符串生成函数(已经封装好)

react-native 请求封装

自己封装Linux命令行万能解压命令

react-native中使用Echarts,自己使用WebView封装Echarts经验