前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >移动跨平台ReactNative开关组件Switch【15】

移动跨平台ReactNative开关组件Switch【15】

作者头像
江咏之
发布2022-06-17 14:56:13
8880
发布2022-06-17 14:56:13
举报
文章被收录于专栏:技术社区技术社区

React Native,是一个混合移动应用开发框架,是目前流行的跨平台移动应用开发框架之一。React Native 采用不同的方法进行混合移动应用开发。它不会生成原生 UI 组件,而是基于 React,React Native 是一个用于构建基于 Web 的交互界面的 JavaScript 库,因此会有更丰富的 UI 体验效果,同时也能够很好地调用底层框架的UI使用。

React Native 开关组件 Switch

如果要在两个值之间切换,或者要在两个状态之间切换,我们可以使用 React Native 提供的 开关组件 Switch

开关组件,顾名思义,就像我们日常电灯的开关一样:按一下开,再按一下关,再按一下又开

开关组件 Switch 在 Android 端的样式如下

React Native 开关组件 Switch on
React Native 开关组件 Switch on

React Native 开关组件 Switch

引入组件

代码语言:javascript
复制
import { Switch } from 'react-native'

使用语法

代码语言:javascript
复制
<Switch
   onValueChange = {function(value){}}
   thumbColor    = {color}
   trackColor    = {{false:color,true:color}}
   onChange      = {function(event){}}
   value         = {true|false}/>

Switch 只有两个值 truefalse,都是布尔类型。

  • true 表示开关的 状态。
  • false 表示开关的 状态,默认值。

这两个值是固定的,我们不能变更。

如果我们要改变开关的初始状态,可以使用 value 属性来设置初始值,不过只能设置为 truefalse

注意:value 是必填属性,如果不设置,开关的状态看起来用于处于 状态。

Switch 还有两个事件回调函数 onValueChangeonChange。前者当开关的值发生改变时触发,参数是 开关变更后的新值。 后者当用户尝试改变开关状态时触发,参数是 事件

开关的外观基本是固定的,我们不能改变,唯一能做的就是改变颜色。这里有三个颜色可以改变,一个是导轨的颜色,分为 状态下导轨的颜色和 状态下导轨的颜色。还有一个是 滑块 的颜色。

因此,如果你要设置导轨的颜色,需要传递一个对象,格式如下

代码语言:javascript
复制
{false:color,true:color}

例如

代码语言:javascript
复制
{false:'#eeeeee',true:'#333333'}

当开关处于开状态下时的导轨颜色为 #333333,处于关状态下时的颜色为 #eeeeee

范例 1 : 最基本的使用

React Native Switch 最基本的使用,仅仅作为状态展示组件,那么只需要一个属性即可,那就是 value 用于设置开关的初始值。

App.js
代码语言:javascript
复制
import React, { Component } from 'react'
import { View, Text, Switch, StyleSheet } from 'react-native'

export default class App  extends Component {
    constructor() {
        super();
        this.label = {false:'关',true:'开'}
        this.state = {
            switch1Value: true,
        }
    }

    render() {
        return (
            <View style = {styles.container}>
                <Switch  
                    value= {this.state.switch1Value} 
                />
                <View>
                    <Text>Switch 当前的状态是:{this.label[this.state.switch1Value]}</Text>
                </View>
            </View>
        )
    }
}

const styles = StyleSheet.create ({
    container: {
        flex: 1,
        alignItems: 'center',
        marginTop: 100
   }
})

运行效果如下,这时候无论怎么切换状态,都是处于 的状态。

范例 1 : 可响应状态变更

Switch 组件如果要响应我们的触摸操作,就需要使用 onValueChange 来设置 value 的值。

App.js
代码语言:javascript
复制
import React, { Component } from 'react'
import { View, Text, Switch, StyleSheet } from 'react-native'

export default class App  extends Component {
    constructor() {
        super();
        this.label = {false:'关',true:'开'}
        this.state = {
            switch1Value: true,
        }
    }

    toggleSwitch = (value) => {
        this.setState({switch1Value: value})
    }

    render() {
        return (
            <View style = {styles.container}>
                <Switch 
                    onValueChange = {this.toggleSwitch} 
                    value= {this.state.switch1Value} 
                />
                <View><Text>Switch 当前的状态是:{this.label[this.state.switch1Value]}</Text></View>
            </View>
        )
    }
}

const styles = StyleSheet.create ({
    container: {
        flex: 1,
        alignItems: 'center',
        marginTop: 100
   }
})

演示效果如下

范例3 :定制外观

如果我们还需要对外观的颜色加以定制,可以设置 thumbColortrackColor

比如说我们要将 Switch 的外观定制为下面的样子。

React Native 开关组件 Switch on
React Native 开关组件 Switch on

可以设置属性

代码语言:javascript
复制
<Switch
   thumbColor    = {"#000000"}
   trackColor    = {{false:"#eeeeee",true:"#999999"}}
/>
App.js
代码语言:javascript
复制
import React, { Component } from 'react'
import { View, Text, Switch, StyleSheet } from 'react-native'

export default class App  extends Component {
    constructor() {
        super();
        this.label = {false:'关',true:'开'}
        this.state = {
            switch1Value: true,
        }
    }

    toggleSwitch = (value) => {
        this.setState({switch1Value: value})
    }

    render() {
        return (
            <View style = {styles.container}>
                <Switch 
                    thumbColor={"#000000"}
                    trackColor={{false:"#eeeeee",true:"#999999"}}
                    onValueChange = {this.toggleSwitch} 
                    value= {this.state.switch1Value} 
                />
                <View><Text>Switch 当前的状态是:{this.label[this.state.switch1Value]}</Text></View>
            </View>
        )
    }
}

const styles = StyleSheet.create ({
    container: {
        flex: 1,
        alignItems: 'center',
        marginTop: 100
   }
})

h1Value]} ) } }

const styles = StyleSheet.create ({ container: { flex: 1, alignItems: ‘center’, marginTop: 100 } })

代码语言:javascript
复制
演示
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • React Native 开关组件 Switch
    • React Native 开关组件 Switch
      • 引入组件
      • 使用语法
    • 范例 1 : 最基本的使用
      • 范例 1 : 可响应状态变更
        • 范例3 :定制外观
        相关产品与服务
        云开发 CloudBase
        云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档