• 提升前端开发效率:基于vue的van-radio-group组件封装指南


    前言

    vant 作为一款流行的 ui 框架,其中,van-radio-group 组件是一个常用的单选框组件,但有时我们需要根据项目需求进行定制化封装。本文将介绍如何基于 vue 框架封装 van-radio-group 组件,让我们一起来探索吧!


    封装文件

    在这个组件中,使用了 vant 框架提供的 van-radio-groupvan-radio 组件来实现单选框的功能。组件接受三个 props:required(是否必选)、disabled(是否禁用)和 options(选项数组)。在组件的 data 属性中,定义了 checkedcheckRadioFlag 两个属性,分别用来保存选中项的值和判断是否需要清空选中项的状态。点击单选框时,会触发 clickFn 方法,根据 checkRadioFlag 的值来判断是否清空选中项,并通过 emit 方法向父组件发送更新事件。当选中项发生变化时,会触发 changeFn 方法,同样通过 emit 方法向父组件发送更新事件。当选中项发生变化时,会触发 changeFn 方法,同样通过 emit 方法向父组件发送 change 事件。

    <template>
      <div>
        <van-radio-group v-bind="$attrs" :direction="$attrs.direction" :disabled="disabled" v-model="checked" @change="changeFn">
          <van-radio :name="item.name" @click="clickFn" v-for="item in options" :key="item.name">{{ item.label }}van-radio>
        van-radio-group>
      div>
    template>
    <script>
    export default {
      props: {
        required: {
          type: Boolean,
        },
        disabled: {
          type: Boolean,
        },
        options: {
          type: Array,
        },
      },
      data() {
        return {
          checked: "",
          checkRadioFlag: false,
        };
      },
      methods: {
        clickFn() {
          if (this.checkRadioFlag) {
            this.checked = "";
          }
          this.checkRadioFlag = true;
          this.$emit("update:model", this.checked);
        },
        changeFn() {
          this.checkRadioFlag = false;
          this.$emit("change", this.checked);
        },
      },
    };
    script>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    使用文件

    这个组件中使用了一个名为 vRadio 的自定义组件来实现单选框的功能。vRadio 组件接受两个 props:options(选项数组)和 direction(单选框的排列方向)。在组件的 data 属性中,定义了 valueradioList 两个属性,分别用来保存选中项的值和选项数组的数据。vRadio 组件通过 props 接收 optionsdirection,并使用 v-bind 指令将其传递给 van-radio-group 组件和 van-radio 组件。vRadio 组件还使用了 model.sync 来实现双向绑定,将选中项的值保存在 value 属性中。通过使用 vant 框架提供的组件来实现单选框的功能,并通过 propsdata 属性来传递和保存选项和选中项的数据。同时,通过事件和双向绑定来实现选中项的更新和变化的通知。

    <template>
      <div>
        <vRadio :options="radioLsit" :direction="`horizontal`" :model.sync="value" />
      div>
    template>
    
    <script>
    import vRadio from "@/components/vRadio/index";
    
    export default {
      components: {
        vRadio,
      },
      data() {
        return {
          value: "",
          radioLsit: [
            {
              name: "1",
              label: "是",
            },
            {
              name: "2",
              label: "否",
            },
          ],
        };
      },
    };
    script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    实现效果

    在这里插入图片描述

  • 相关阅读:
    ECharts
    基于SuperMap iObjects C++之地形凹凸点提取
    探索Web3:去中心化的互联网新时代
    java开发工具IDEA JVM框架教程:Google App Engine配置
    程序放在哪儿?
    纯CSS3实现萧瑟深秋中律动的音乐之火
    数字化外协生产综合管理系统,实现信息自动同步,数据自动统计分析!
    算法 java 排序和查找
    ARTS打卡第四周之删除链表倒数第几个节点、gdb start命令、扩散模型、如何学习分享
    SMC IRV系列手动真空调节器低压控制性能考核试验
  • 原文地址:https://blog.csdn.net/Shids_/article/details/131516862