Radio 单选框
单选框组件。
受控组件,需要声明 modelValue 属性
基础用法
使用 value 属性定义选中时的值,组件的默认插槽放置展示内容。
添加 disabled 属性,声明组件为禁用状态。
show code
<template>
<Flex gap="160px">
<Flex gap="24px">
<Radio v-model="value" value="A">A</Radio>
<Radio v-model="value" value="B">B</Radio>
</Flex>
<Flex gap="24px">
<Radio v-model="value" value="A" disabled>A</Radio>
<Radio v-model="value" value="B" disabled>B</Radio>
</Flex>
</Flex>
</template>
<script>
import { ref } from 'vue'
import { Flex, Radio } from 'comz'
export default {
components: {
Flex,
Radio
},
setup() {
return {
value: ref('A')
}
}
}
</script>
值类型
Radio 组件的 value 属性可以传递 string、number、Array、boolean、object 类型的值。
value 在组件内部会使用 JSON.stringify 序列化成 JSON 格式再进行处理,所以需要注意不能被序列化的属性值将会被抛弃。
value: ""
Invalid value: ""
show code
<template>
<pre>value: <code>{{ JSON.stringify(value, null, 0) }}</code></pre>
<Flex gap="24px">
<Radio v-model="value" :value="`string`">String</Radio>
<Radio v-model="value" :value="123">Number</Radio>
<Radio v-model="value" :value="['arr1', 'arr2']">Array</Radio>
<Radio v-model="value" :value="true">Boolean</Radio>
<Radio v-model="value" :value="{ key: 'value' }">Object</Radio>
</Flex>
<br />
<pre>Invalid value: <code>{{ JSON.stringify(value2, null, 0) }}</code></pre>
<Flex gap="24px">
<Radio v-model="value2" :value="() => {}">Function</Radio>
<Radio v-model="value2" :value="[new Map(), () => {}]">Array</Radio>
<Radio v-model="value2" :value="{ key: () => {} }">Object</Radio>
</Flex>
</template>
<script>
import { ref } from 'vue'
import { Flex, Radio } from 'comz'
export default {
components: {
Flex,
Radio
},
setup() {
return {
value: ref(''),
value2: ref('')
}
}
}
</script>
展示内容
Radio 的默认插槽可以放置任意内容。
show code
<template>
<Flex gap="160px">
<Flex gap="24px">
<Radio v-model="value" value="image1">
<Icon size="64px" color="#d2d2d2"><CardImage /></Icon>
</Radio>
<Radio v-model="value" value="image2">
<Icon size="64px" color="#d2d2d2"><CardImage /></Icon>
</Radio>
<Radio v-model="value" value="image3">
<Icon size="64px" color="#d2d2d2"><CardImage /></Icon>
</Radio>
</Flex>
</Flex>
</template>
<script>
import { ref } from 'vue'
import { Flex, Radio, Icon } from 'comz'
import { CardImage } from '@comz/icons'
export default {
components: {
Flex,
Radio,
Icon,
CardImage
},
setup() {
return {
value: ref('')
}
}
}
</script>
API
属性
| Attribute | Type | Default | Description |
|---|
| modelValue | string | '' | 当前选中的值 |
| value | string | '' | 单选框的值 |
| disabled | boolean | false | 是否禁用 |
插槽
| Slot | Description |
|---|
| default | 默认插槽,显示展示内容 |
事件
| Event | Type | Description |
|---|
| update:modelValue | (state: string) => void | 监听modelValue值变化 |