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 值变化 |