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

news/2024/7/10 0:27:55 标签: 前端, vue

前言

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>


使用文件

这个组件中使用了一个名为 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>

实现效果

在这里插入图片描述


http://www.niftyadmin.cn/n/5039393.html

相关文章

Django执行

1.进入根目录 2.生成迁移文件 python .\manage.py makemigrations3.执行迁移文件 python .\manage.py migrate 4.启动项目 python .\manage.py runserver

Windows服务器设置Nginx实现分布式服务

1.安装Nginx 下载Nginx-1.16.1版本。解压到如下目录&#xff1a; 设置环境变量&#xff1a; 检查版本&#xff1a; 启动nginx.exe&#xff0c;出现黑框一闪而过&#xff0c;进程中出现如下情况代表启动成功&#xff1a; 2.搭建模拟HTTP服务 下载wiremock-standalone-2.25.1.j…

【Spring Boot】Spring Boot源码解读与原理剖析

这里写目录标题 前言精进Spring Boot首选读物“小册”变“大书”&#xff0c;彻底弄懂Spring Boot全方位配套资源&#xff0c;学不会来找我&#xff01;技术新赛道&#xff0c;2023领先抢跑 前言 承载着作者的厚望&#xff0c;掘金爆火小册同名读物《Spring Boot源码解读与原理…

【Django】掌握models.py模型文件的使用

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、models类继承&#xff08;一&#xff09;创建apps文件夹&#xff08;二&#xff09;settings.py文件配置&#xff08;三&#xff09;…

Windows系统如何部署Wing FTP Server与公网远程访问【内网穿透】

Wing FTP Server安装配置结合内网穿透实现公网访问本地站点 文章目录 Wing FTP Server安装配置结合内网穿透实现公网访问本地站点前言1.Wing FTP Server下载安装2.Wing FTP Server配置部署3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3…

android Studio为项目生成签名

由debug模式切换成 release 模式时&#xff0c;会出现如下图的情况&#xff08;出现小红叉叉&#xff09; 两种方式&#xff1a;生成签名与不生成签名 1. 生成签名 signingConfigs {release {storeFile file(release/dup.jks)storePassword xxxdkeyAlias key0keyPassword xxxx…

Vue系列(一)之 Vue入门

一. Vue简介 1.1 概述 Vue是一个构建用户界面(UI)的[渐进式]JavaScript框架。 2.2 特点 1.声明式编码&#xff0c;遵循MVVM原则 2.编码简单&#xff0c;体积小 3.组件化&#xff0c;复用率高&#xff0c;代码维护容易 2.3 MVVM介绍 MVVM&#xff0c;一种更好的UI模式解决…

Python与数据分析--Matplotlib-2

目录 1.写在文前 2.实例1--武汉新冠趋势图 3.简单散点图实例 4.灵活散点图实例 5.饼图操作实例 1.写在文前 """ Matplotlib库我们大致已经学完了&#xff0c;但是缺乏一定的实战经验。 今天我们就来进行一下matplotlib的实战操作。 """ #导…