Skip to content

CheckboxGroup 复选框组

此组件通常用于组合一组复选框进行组合使用。

WARNING

由于在抖音小程序中 provide/inject 存在 BUG,所以在抖音小程序中无法通过 v-model 来绑定组件中复选框的的选中状态,需手动通过 hi-checkboxchecked 属性来控制组中复选框的选中状态。
关于此 BUG 的帖子

基础使用

通过 v-model 属性绑定组中选中复选框的值。

vue
<template>
    <hi-checkbox-group v-model="values">
        <hi-checkbox
            v-for="item in options"
            :key="item.value"
            :label="item.label"
            :value="item.value"
        ></hi-checkbox>
    </hi-checkbox-group>
</template>

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

    // 选项数据
    const options = ref([
        { label: "鸡蛋", value: 1 },
        { label: "鸭蛋", value: 2 },
        { label: "鹅蛋", value: 3 },
        { label: "大米", value: 4 },
        { label: "小米", value: 5 },
        { label: "苹果", value: 6 },
        { label: "香蕉", value: 7 },
        { label: "橘子", value: 8 },
        { label: "葡萄", value: 9 },
        { label: "草莓", value: 10 },
    ]);

    // 选中项的值
    const values = ref([2, 3]);
</script>

异步变更

通过 async 属性设置是否开启异步变更。
开启异步变更后,会在变更完选中状态后,会触发 asyncChange 事件,需手动更新选中状态。

vue
<template>
    <hi-checkbox-group v-model="values" @asyncChange="onAsyncChange">
        <hi-checkbox
            v-for="item in options"
            :key="item.value"
            :label="item.label"
            :value="item.value"
        ></hi-checkbox>
    </hi-checkbox-group>
</template>

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

    // 选项数据
    const options = ref([
        { label: "鸡蛋", value: 1 },
        { label: "鸭蛋", value: 2 },
        { label: "鹅蛋", value: 3 },
        { label: "大米", value: 4 },
        { label: "小米", value: 5 },
        { label: "苹果", value: 6 },
        { label: "香蕉", value: 7 },
        { label: "橘子", value: 8 },
        { label: "葡萄", value: 9 },
        { label: "草莓", value: 10 },
    ]);

    // 选中项的值
    const values = ref([2, 3]);

    // 异步变更事件
    function onAsyncChange(value, isChecked) {
        console.log("选项的值 ->", value);
        console.log("选项的选中状态 ->", isChecked);
        uni.showModal({
            title: "提示",
            content: `是否更新选中状态`,
            showCancel: true,
            confirmText: "更新状态",
            cancelText: "保持不变",
            success: ({ confirm, cancel }) => {
                if (confirm) {
                    if(isChecked) {
                        values.value.splice(values.value.indexOf(value), 1);
                    } else {
                        values.value.push(value);
                    }
                }
            }
        });
    }
</script>

Props

属性名说明类型默认值可选值版本
v-model选中项的值Array<String, Number>[]--
async是否开启异步变更Booleanfalsetrue-
gap选项之间的间距String-

Event

事件名说明回调参数版本
change选中的值更新事件values: 选中项的值-
asyncChange异步变更事件value: 选项的值, isChecked: 选项的选中状态-

Slots

名称说明参数版本
default默认插槽,用于放置 hi-checkbox,但是也可以放置其他内容--

样式变量

组件提供了以下样式变量,可以在使用时设置这些变量来修改组件的样式。

变量名默认值版本
--hi-checkbox-group-displayflex-
--hi-checkbox-group-flex-wrapwrap-
--hi-checkbox-group-gap10px-

基于 MIT 许可发布