您当前的位置:首页 > 网站建设 > javascript
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery | 小程序 |

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

51自学网 2022-02-21 13:41:24
  javascript

本文实例为大家分享了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/coreexport 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>

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


下载地址:
详解React项目中eslint使用百度风格
vue3.0实现下拉菜单的封装
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。