react native Button 使用详解

Button其实就是 Touchable(TouchableNativeFeedback、TouchableOpacity)和Text封装而来,下面是Button的部分源码:

render() {
    const {
      accessibilityLabel,
      color,
      onPress,
      title,
      disabled,
    } = this.props;
    const buttonStyles = [styles.button];
    const textStyles = [styles.text];
    const Touchable = Platform.OS === 'android' ? TouchableNativeFeedback : TouchableOpacity;
    if (color && Platform.OS === 'ios') {
      textStyles.push({color: color});
    } else if (color) {
      buttonStyles.push({backgroundColor: color});
    }
    if (disabled) {
      buttonStyles.push(styles.buttonDisabled);
      textStyles.push(styles.textDisabled);
    }
    invariant(
      typeof title === 'string',
      'The title prop of a Button must be a string',
    );
    const formattedTitle = Platform.OS === 'android' ? title.toUpperCase() : title;
    return (
      <Touchable
        accessibilityComponentType="button"
        accessibilityLabel={accessibilityLabel}
        accessibilityTraits={['button']}
        disabled={disabled}
        onPress={onPress}>
        <View style={buttonStyles}>
          <Text style={textStyles}>{formattedTitle}</Text>
        </View>
      </Touchable>
    );
      }

由此可见android是TouchableNativeFeedback ,ios是TouchableOpacity,android下title默认大写。
属性:

title:Button显示的文本。
accessibilityLabel:据说这个是用于盲文的,读屏器软件可能会读取这一内容(由于没有相关设备未做考证,在这里也请教下大家。)。
color:ios表示字体的颜色,android表示背景的颜色(莫名其妙啊,不知道为什么这样设计)。
disabled:是否可用,如果为true,禁用此组件的所有交互。
onPress:点击触发函数。

demo:

import React, {Component} from 'react';
    import {
        StyleSheet,
        View,
        Button,
        ToastAndroid,
    } from 'react-native';

    export default class ButtonDemo extends Component {

    render() {
        return (
            <View style={{flex:1}}>
                <Button title='默认Button' accessibilityLabel='accessibilityLabel'/>
                <Button title='color设置为红色' color='red' />
                <Button title='禁用' disabled={true} onPress={()=>{
                    ToastAndroid.show('点我了');
                }}/>
                <Button title='禁用' onPress={()=>{
                    ToastAndroid.show('点我了',ToastAndroid.SHORT);
                }}/>
            </View>
        );
    }
    }

效果图:

这里写图片描述

github下载地址

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老孟Flutter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值