iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue3.0实现复选框组件的封装
  • 507
分享到

vue3.0实现复选框组件的封装

2024-04-02 19:04:59 507人浏览 泡泡鱼
摘要

本文实例为大家分享了vue3.0实现复选框组件封装的具体代码,供大家参考,具体内容如下 大致步骤: 实现组件本身的选中与不选中效果 实现组件的v-model指令

本文实例为大家分享了vue3.0实现复选框组件封装的具体代码,供大家参考,具体内容如下

大致步骤:

  • 实现组件本身的选中与不选中效果
  • 实现组件的v-model指令
  • 改造成 @vueuse/core 的函数写法

<!-- 组件基本样式 -->
<template>
  <div class="xtx-checkbox" @click="changeChecked()">
    <i v-if="checked" class="iconfont icon-checked"></i>
    <i v-else class="iconfont icon-unchecked"></i>
    <span v-if="$slots.default"><slot /></span>
  </div>
</template>

<script>
import { ref } from 'Vue'
export default {
  name: 'XtxCheckbox',
  setup () {
    const checked = ref(false)
    const changeChecked = () => {
      checked.value = !checked.value
    }
    return { checked, changeChecked }
  }
}
</script>

<style scoped lang="less"> 
 // 样式可以酌情更改
.xtx-checkbox {
  display: inline-block;
  margin-right: 2px;
  .icon-checked {
    color: @xtxColor;
    ~ span {
      color: @xtxColor;
    }
  }
  i {
    position: relative;
    top: 1px;
  }
  span {
    margin-left: 2px;
  }
}
</style>
// 注:如需全局使用,需注册为全局组件

<!-- 实现v-model指令 -->
... 省略结构
<script>
import { toRef } from 'vue'
export default {
  name: 'XtxCheckbox',
  props: {
    modelValue: { // v-model默认绑定的值为modelValue
      type: Boolean,
      default: false
    }
  },
  setup (props, { emit }) {
    const checked = toRef(props, 'modelValue') // 定义checked存储接收到的boolean值
    const changeChecked = () => {
      emit('update:modelValue', !checked.value) // 给使用的父组件传值,实现复选框的勾选
    }
    return { checked, changeChecked }
  }
}
</script>
... 省略样式

<!-- 基本使用 -->
<!-- 自定义复选框测试 -->
<xtx-checkbox v-model="checked">自定义复选框</xtx-checkbox>
<script>
import { ref } from 'vue'
export default {
  name: 'SubCateGory',
  setup () {
    const checked = ref(true)
    return { checked }
  }
}
</script>


<!-- @vueuse/core的函数写法 -->
<template>
  <div class="xtx-checkbox" @click='checked=!checked'>
    <i v-if="checked" class="iconfont icon-checked"></i>
    <i v-else class="iconfont icon-unchecked"></i>
    <span>
      <slot />
    </span>
  </div>
</template>

<script>
import { useVModel } from '@vueuse/core' // 需要 npm i @vueuse/core 或 yarn add @vueuse/core
export default {
  name: 'XtxCheckbox',
  props: {
    modelValue: {
      type: Boolean,
      default: false
    }
  },
  setup (props, { emit }) {
    // 获取父组件传递过来的modelValue的值
    const checked = useVModel(props, 'modelValue', emit)
    return { checked }
  }
}
</script>


// 使用方法如上
<xtx-checkbox v-model="checked">自定义复选框</xtx-checkbox>
<script>
import { ref } from 'vue'
export default {
  name: 'SubCategory',
  setup () {
    const checked = ref(true)
    return { checked }
  }
}
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: vue3.0实现复选框组件的封装

本文链接: https://www.lsjlt.com/news/136361.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue3.0实现复选框组件的封装
    本文实例为大家分享了vue3.0实现复选框组件封装的具体代码,供大家参考,具体内容如下 大致步骤: 实现组件本身的选中与不选中效果 实现组件的v-model指令 ...
    99+
    2022-11-12
  • vue3.0手动封装分页组件的方法
    本文实例为大家分享了vue3.0手动封装分页组件的具体代码,供大家参考,具体内容如下 1.父组件引入 src/views/goods/components/goods-comment...
    99+
    2022-11-12
  • vue3.0实现下拉菜单的封装
    vue3.0出来已经有段时间的了,也与必要开始研究它了! 先看下我们要实现的效果 很常见的展开显示菜单项的内容,在vue3.0里面怎么开发,这里样式我们用的是bootstrap的默...
    99+
    2022-11-12
  • vue如何封装div框选时间的组件
    这篇文章主要为大家展示了“vue如何封装div框选时间的组件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何封装div框选时间的组件”这篇文章吧。div...
    99+
    2022-10-19
  • vue实现全选组件封装实例详解
    效果  封装的组件 <template> <el-form-item :label="label"> <el-checkbox ...
    99+
    2022-11-13
  • vue3.0 移动端二次封装van-uploader实现上传图片(vant组件库)
    1、前提:业务需求,最多上传6张图片,并可以实现本地预览 2、解决方法:使用vant组件库中的van-uploader实现 3、代码实现 template <div cl...
    99+
    2022-11-13
  • Vue封装远程下拉框组件的实现示例
    之前封装了一个远程搜索的输入框,静态在Vue官网看到一个类似的远程搜索下拉框,今天也封装一个远程搜索下拉框,面对不同的需求 我们修改了官方提供的代码来封装了 父组件 RemoteS...
    99+
    2022-11-13
  • Vue封装数字框组件实现流程详解
    目录数量选择组件-基本结构数量选择组件-v-model语法糖数量选择组件-功能实现数量选择组件-基本结构 (1)准备基本结构 <script lang="ts" setup n...
    99+
    2023-05-16
    Vue封装数字框组件 Vue数字输入框
  • react组件封装input框的防抖处理的项目实现
    目录防抖1.类组件版本2.函数组件版本防抖 防抖就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间 项目中有些input框需要做防抖...
    99+
    2023-05-18
    react input框防抖 react 输入框防抖
  • React封装弹出框组件的方法
    本文实例为大家分享了React封装弹出框组件的方法,供大家参考,具体内容如下 效果图 文件目录 alertList.tsx 用于容纳弹出框的容器 import React f...
    99+
    2022-11-13
  • Vue组件封装怎么实现
    这篇文章主要介绍“Vue组件封装怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue组件封装怎么实现”文章能帮助大家解决问题。一、组件封装的优势复用性:组件封装可以将常用的功能或视图模块抽象...
    99+
    2023-07-05
  • Vue实现轮播图组件的封装
    目录轮播图功能-获取数据轮播图-通用轮播图组件轮播图-数据渲染轮播图-逻辑封装轮播图功能-获取数据 目标: 基于pinia获取轮播图数据 核心代码: (1)在types/data.d...
    99+
    2023-05-16
    Vue轮播图组件封装 Vue组件封装
  • vue3.0中使用websocket,封装到公共方法的实现
    目录使用websocket,封装到公共方法vue中封装websocket问题 1.在untils文件夹下新建socket_service.js2.在main.js里引用2....
    99+
    2022-11-13
  • AntDesign封装年份选择组件的方法
    常见问题 在平时的业务场景中,我们需要用到一个年份的选择组件。但是在antd2.x的版本中,antd的DatePicker组件还没有mode属性,不能单独设置为年份选择器。虽然ant...
    99+
    2022-11-13
  • React+Ts实现二次封装组件
    目录前言样式类型扩展功能扩展 继承 修改 拦截前言 在react中相信大家用的最多的组件库就是Antd了,可是往往在公司的实际开发过程中,我们会发现ui给的设计图和组件有着不小的差别...
    99+
    2023-05-17
    React Ts封装组件 React Ts组件
  • VB.NET中怎么实现组件封装
    这篇文章给大家介绍VB.NET中怎么实现组件封装,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。新建一个项目,选择Visual Basic \ Window \ 类库,假设项目名为ClassLibrary1然后 在sol...
    99+
    2023-06-17
  • Vue组件封装之input输入框实战记录
    目录实战目的实战效果核心思想一 格式规范二 给父组件传递value值三 错误提示四 格式检验五 多个input框的检验写在最后实战目的 封装一个自定义的input组件,只适用于 in...
    99+
    2022-11-13
    vue input组件封装 vue封装组件思路 vue组件的封装
  • 基于React封装组件的实现步骤
    目录前言antd 是如何封装组件的divider 组件源代码如何暴露组件属性如何设置统一类名前缀如何处理样式与类名divider 组件样式源代码前言 很多小伙伴在第一次尝试封装组件时...
    99+
    2022-11-12
  • vue.js基于ElementUI封装了CRUD的弹框组件
    目录前言开始封装json对象如下所示table表头作为列表传入,数据结构如下在子组件中循环渲染出表头在父组件中调用前言 代码写得不好,为什么不封装一下呢,如果用的是ElementUI...
    99+
    2022-11-13
  • vue 的全选组件封装你知道多少
    效果  封装的组件 <template> <el-form-item :label="label"> <el-checkbox ...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作