美文网首页React Native
React-Native Switch 的简单使用

React-Native Switch 的简单使用

作者: 煎包小混沌 | 来源:发表于2017-08-01 17:56 被阅读0次

Switch跨平台通用的可以在两个状态中切换的组件。
注意这是一个“受控组件”(controlled component)。你必须使用onValueChange回调来更新value属性以响应用户的操作。如果不更新value属性,组件只会按一开始给定的value值来渲染且保持不变,看上去就像完全点不动。

35CB35C3-1029-4D8C-A470-DBA0A6D912FE.png
Switch主要属性:
  • valueSwitch的开关状态,true打开,false关闭,默认false
  • onValueChange:开启关闭Switch状态时的回调函数,参数为新的值,需要在此回调中设置value的状态值。
  • onTintColor:开启状态时的背景颜色。
  • tintColor:关闭状态时的边框颜色(iOS)或背景颜色(Android)。
  • thumbTintColor:开关上圆形按钮的背景颜色。
  • disabled:如果为true,这个组件不能进行交互。
  • testID:用来在端到端测试中定位此视图。
创建一个Switch
<Switch style={{marginTop: 20}}
                   onTintColor={'#ffaa11'}
                   tintColor={'#aaaa11'}
                   value={this.state.swicthValue1}
                   onValueChange={(value)=> {
                       //当开关状态改变了,一定要修改value的值,不然最终无法改变状态
                       console.log('onValueChange1 =' + value);
                       this.setState({
                           swicthValue1: value
                       })
                    }}
                   testID={'one'}
                   thumbTintColor={'#ff1111'}/>
效果代码:
import React, { Component } from 'react';
import {
    AppRegistry,
    View,
    Switch,
    Text
} from 'react-native';

export default class RNSwitchView extends Component {
    constructor(props){
        super(props);
        this.state = {
            swicthValue1: true,
            swicthValue2: false
        }
    }
    _switch1 =()=>{
       return(
           <Switch style={{marginTop: 20}}
                   onTintColor={'#ffaa11'}
                   tintColor={'#aaaa11'}
                   value={this.state.swicthValue1}
                   onValueChange={(value)=> {
                       //当开关状态改变了,一定要修改value的值,不然最终无法改变状态
                       console.log('onValueChange1 =' + value);
                       this.setState({
                           swicthValue1: value
                       })
                    }}
                   testID={'one'}
                   thumbTintColor={'#ff1111'}/>
       )
    };
    _switch2 =()=>{
        return(
            <Switch style={{marginTop: 20}}
                    onTintColor={'#aaaaff'}
                    tintColor={'#ffaa11'}
                    value={this.state.swicthValue2}
                    onValueChange={(value)=> {
                        //当开关状态改变了,一定要修改value的值,不然最终无法改变状态
                        console.log('onValueChange2 =' + value);
                        this.setState({
                            swicthValue2: value
                        })
                    }}
                    testID={'two'}
                    thumbTintColor={'#11ff11'}/>
        )
    };
    _switch3 =()=>{
        return(
            <Switch onTintColor={'#aafaff'}
                    tintColor={'#1faa11'}
                    value={this.state.swicthValue2}
                    onValueChange={(value)=> {
                        //当开关状态改变了,一定要修改value的值,不然最终无法改变状态
                        console.log('onValueChange2 =' + value);
                        this.setState({
                            swicthValue2: value
                        })
                    }}
                    testID={'two'}
                    thumbTintColor={'#f1ff11'}
                    disabled={true}/>
        )
    };
    render(){
        return(
            <View style={{flex: 1, backgroundColor: '#dddddd', alignItems: 'center'}}>
                <View style={{marginTop: 40, width: 340, height: 200, backgroundColor: '#ffffff', borderRadius: 5, alignItems: 'center'}}>
                    {this._switch1()}
                    {this._switch2()}
                    <Text style={{marginTop: 20, textAlign: 'center'}}>下面的switch设置disabled为true,无法点击,但是可以设置value的值来改变状态</Text>
                    {this._switch3()}
                </View>
            </View>
        )
    }
}
AppRegistry.registerComponent('RNSwitchView', ()=>RNSwitchView);

相关文章

网友评论

    本文标题:React-Native Switch 的简单使用

    本文链接:https://www.haomeiwen.com/subject/ugtslxtx.html