1.0.3 • Published 1 month ago

@tanzhenxing/zx-radio-group v1.0.3

Weekly downloads
-
License
ISC
Repository
-
Last release
1 month ago

zx-radio-group 单选框组组件

介绍

zx-radio-group 组件是一个单选框组容器,用于包裹多个 zx-radio 组件,实现单选效果。适用于在多个互斥的选项中选择的场景。

引入

<zx-radio-group v-model="value">
  <zx-radio value="1">选项1</zx-radio>
  <zx-radio value="2">选项2</zx-radio>
</zx-radio-group>

基础用法

基本单选框组

<template>
  <zx-radio-group v-model="radioValue">
    <zx-radio value="1">选项1</zx-radio>
    <zx-radio value="2">选项2</zx-radio>
    <zx-radio value="3">选项3</zx-radio>
  </zx-radio-group>
</template>

<script setup>
import { ref } from 'vue';

const radioValue = ref('1');
</script>

禁用状态

<zx-radio-group v-model="radioValue" disabled>
  <zx-radio value="1">选项1</zx-radio>
  <zx-radio value="2">选项2</zx-radio>
</zx-radio-group>

横向和纵向布局

<!-- 横向布局 (默认) -->
<zx-radio-group v-model="radioValue" placement="row">
  <zx-radio value="1">选项1</zx-radio>
  <zx-radio value="2">选项2</zx-radio>
</zx-radio-group>

<!-- 纵向布局 -->
<zx-radio-group v-model="radioValue" placement="column">
  <zx-radio value="1">选项1</zx-radio>
  <zx-radio value="2">选项2</zx-radio>
</zx-radio-group>

自定义样式

<zx-radio-group 
  v-model="radioValue"
  active-color="#ff5500"
  size="20"
  label-size="16"
>
  <zx-radio value="1">选项1</zx-radio>
  <zx-radio value="2">选项2</zx-radio>
</zx-radio-group>

按钮样式单选框组

搭配 zx-radio-button 组件(如果已实现)使用,可以实现按钮样式的单选框组:

<zx-radio-group v-model="radioValue" text-color="#ffffff" fill="#409EFF">
  <zx-radio-button value="1">选项1</zx-radio-button>
  <zx-radio-button value="2">选项2</zx-radio-button>
  <zx-radio-button value="3">选项3</zx-radio-button>
</zx-radio-group>

API

Props

参数说明类型默认值
modelValue绑定的值String / Number / Boolean''
disabled是否禁用所有 radioBooleanfalse
shape外观形状,可选值:circle-圆形、square-方形String'circle'
activeColor选中状态的颜色String'#2979ff'
inactiveColor未选中的颜色String'#c8c9cc'
name标识符String''
size组件整体的大小,单位 pxString / Number18
placement布局方式,可选值:row-横向、column-纵向String'row'
label文本String''
labelColorlabel 的颜色String'#303133'
labelSizelabel 的字体大小,单位 pxString / Number14
labelDisabled是否禁止点击文本操作 radioBooleanfalse
iconColor图标颜色String'#ffffff'
iconSize图标的大小,单位 pxString / Number12
borderBottomplacement 为 row 时,是否显示下边框Booleanfalse
iconPlacement图标与文字的对齐方式,可选值:leftrightString'left'
customStyle组件的样式,对象形式Object{}
validateEvent输入时是否触发表单验证Booleantrue
ariaLabel无障碍访问标签String''
textColor按钮形式的 Radio 激活时的文本颜色String'#ffffff'
fill按钮形式的 Radio 激活时的填充色和边框色String'#2979ff'

Events

事件名说明回调参数
change选中值发生变化时触发value:当前选中的值

Slots

名称说明
default自定义默认内容,一般为 zx-radio 组件

注意事项

  1. zx-radio-group 必须与 zx-radio 组件配合使用
  2. v-model 双向绑定的值会自动与 zx-radio 的 value 值进行匹配
  3. 可以通过 disabled 属性禁用整个单选框组
  4. 布局方式可以通过 placement 属性设置为横向(row)或纵向(column)

使用示例

完整示例

<template>
  <view class="container">
    <view class="title">基础用法</view>
    <zx-radio-group v-model="radio1">
      <zx-radio value="1">选项1</zx-radio>
      <zx-radio value="2">选项2</zx-radio>
      <zx-radio value="3">选项3</zx-radio>
    </zx-radio-group>
    
    <view class="title">禁用状态</view>
    <zx-radio-group v-model="radio2" disabled>
      <zx-radio value="1">选项1</zx-radio>
      <zx-radio value="2">选项2</zx-radio>
    </zx-radio-group>
    
    <view class="title">自定义颜色</view>
    <zx-radio-group v-model="radio3" active-color="#ff5500">
      <zx-radio value="1">选项1</zx-radio>
      <zx-radio value="2">选项2</zx-radio>
    </zx-radio-group>
    
    <view class="title">纵向排列</view>
    <zx-radio-group v-model="radio4" placement="column">
      <zx-radio value="1">选项1</zx-radio>
      <zx-radio value="2">选项2</zx-radio>
      <zx-radio value="3">选项3</zx-radio>
    </zx-radio-group>
    
    <view class="title">自定义大小</view>
    <zx-radio-group v-model="radio5" size="24" icon-size="16" label-size="16">
      <zx-radio value="1">选项1</zx-radio>
      <zx-radio value="2">选项2</zx-radio>
    </zx-radio-group>
    
    <view class="title">监听选择变化</view>
    <zx-radio-group v-model="radio6" @change="radioChange">
      <zx-radio value="1">选项1</zx-radio>
      <zx-radio value="2">选项2</zx-radio>
    </zx-radio-group>
  </view>
</template>

<script setup>
import { ref } from 'vue';

const radio1 = ref('1');
const radio2 = ref('1');
const radio3 = ref('1');
const radio4 = ref('1');
const radio5 = ref('1');
const radio6 = ref('1');

const radioChange = (value) => {
  console.log('选中的值:', value);
  uni.showToast({
    title: `选中了:${value}`,
    icon: 'none'
  });
};
</script>

<style>
.container {
  padding: 20rpx;
}
.title {
  margin: 30rpx 0 15rpx;
  font-size: 28rpx;
  color: #303133;
  font-weight: bold;
}
</style>