uniapp使用内置的switch组件的问题

说明

开关选择器

属性说明

属性名类型默认值说明平台差异说明
checkedBooleanfalse是否选中
disabledBooleanfalse是否禁用不支持:抖音小程序、飞书小程序
typeStringswitch

样式

有效值:switch、checkbox

colorColorswitch的颜色,通css的color
@changeEventHandle

checked改变时触发change事件

event.detail={value:checked}

官方示例

<template>
	<view>
		<view class="uni-padding-wrap uni-common-mt">
			<view class="uni-title">默认样式</view>
			<view>
				<switch checked @change="switch1Change" />
				<switch @change="switch2Change" />
			</view>
			<view class="uni-title">不同颜色和尺寸的switch</view>
			<view>
				<switch checked color="#FFCC33" style="transform:scale(0.7)"/>
				<switch color="#FFCC33" style="transform:scale(0.7)"/>
			</view>
			<view class="uni-title">推荐展示样式</view>
		</view>
		<view class="uni-list">
			<view class="uni-list-cell uni-list-cell-pd">
				<view class="uni-list-cell-db">开启中</view>
				<switch checked />
			</view>
			<view class="uni-list-cell uni-list-cell-pd">
				<view class="uni-list-cell-db">关闭</view>
				<switch />
			</view>
		</view>
	</view>
</template>
<script>
export default {
    data() {
        return {}
    },
    methods: {
        switch1Change: function (e) {
            console.log('switch1 发生 change 事件,携带值为', e.detail.value)
        },
        switch2Change: function (e) {
            console.log('switch2 发生 change 事件,携带值为', e.detail.value)
        }
    }
}
</script>

缺点

不能设置为响应式的大小

解决方案

使用uv-ui组件库里的Switch组件来代替官方内置的switch

uv-switch

选择开关用于在打开和关闭状态之间进行切换

平台兼容性

props

  • 注意:需要给switch组件通过v-model绑定一个布尔值,来初始化switch的状态,随后该值被双向绑定, 当用打开选择器时,该值在switch组件内部被修改为true,并反映到父组件,否则为false。换言之,您无需监听switchchange事件,也能 知道某一个switch是否被选中的状态。
  • v-model绑定的值必须为inactiveValueactiveValue二者之一,且inactiveValueactiveValue的值不能相等。
参数说明类型默认值可选值
v-model

双向绑定的值

注意:这里只能使用v-model,不能使用 :value

Boolean

String

Number

false
loading是否处于加载状态Booleanfalsetrue | false
disabled是否禁用Booleanfalsetrue | false
size开关尺寸

String 

Number

25
activeColor打开时的背景色String#2979ff
inactiveColor关闭时的背景色String#ffffff
activeValueswitch打开时的值

Boolean

String

Number

true
inactiveValueswitch关闭时的值

Boolean

String

Number

false
asyncChange是否开启异步变更,开启后需要手动控制输入值Booleanfalsetrue | false
space圆点与外边框的距离

String

Number

0

Event

事件名说明回调参数
@changeswitch打开或关闭时触发value:打开时为activeValue值,关闭时为inactiveValue
@inputswitch打开或关闭时触发(没开启异步)value:打开时为activeValue值,关闭时为inactiveValue

自定义尺寸使用

设置size属性,可以让您自定义switch的尺寸,可自定义单位。

<template>
	<view>
		<uv-switch v-model="value" size="28"></uv-switch>
		<uv-switch v-model="value2" size="20"></uv-switch>
		<uv-switch v-model="value2" size="30rpx"></uv-switch>
	</view>
</template>
<script>
	export default {
		data() {
			return {
				value: false,
				value2: true
			}
		}
	};
</script>

更多使用方式可以前往uv-ui的官网查看:Switch 开关选择器 | 我的资料管理-uv-ui 是全面兼容vue3+2、nvue、app、h5、小程序等多端的uni-app生态框架 (uvui.cn)icon-default.png?t=N7T8https://www.uvui.cn/components/switch.html

### 关于 UniApp 中 `uni-tabs` 组件的存在性 在 UniApp 的官方文档以及相关资料中,并未提及名为 `uni-tabs` 的内置组件[^1]。UniApp 提供了一系列丰富的 UI 组件来支持开发者构建跨平台应用,但是具体到 `uni-tabs` 这一名字的组件,则不在其标准库内。 对于实现标签栏功能,在 UniApp 中通常会使用其他方式: - 使用自定义组件模拟 tab 导航效果。 - 利用框架提供的基础组件组合成所需的界面布局,比如通过 `<view>` 和 `<text>` 等基本元素加上样式控制创建类似的交互体验。 - 如果确实需要类似的功能模块,建议查阅最新版本的 [UniApp 官方文档](https://uniapp.dcloud.io/) 或者第三方插件市场寻找合适的替代方案。 ```html <!-- 示例:简单的 Tab 实现 --> <template> <div class="tabs"> <!-- Tabs Header --> <div class="tab-header"> <span v-for="(item, index) in tabs" :key="index" @click="currentTab = item.value" :class="{ active: currentTab === item.value }">{{ item.label }}</span> </div> <!-- Tab Content --> <component :is="currentView"></component> </div> </template> <script> export default { data() { return { tabs: [ { label: 'Home', value: 'home' }, { label: 'Profile', value: 'profile' } ], currentTab: 'home' }; }, computed: { currentView() { switch (this.currentTab) { case 'home': return () => import('./components/Home.vue'); case 'profile': return () => import('./components/Profile.vue'); default: return null; } } } }; </script> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值