vue3 组件篇 Checkbox

文章目录

    • 组件介绍
    • 组件安装与使用
    • 组件代码
    • 参数说明
    • 事件
    • 关于dxui组件库

组件介绍

checkbox属于比较简单的组件之一,通常情况下需要实现以下逻辑

  1. 两种状态,被选中或者未被选中
  2. 可以设置默认值,或者传入一个checked值,直接使其变成一个完全受控组件
  3. 需要有状态改变的回调

实现的思路主要是依靠input type=“checkbox”,我们可以在这基础上修改样式,来实现新的组件ui,change事件和checked的逻辑,可以依靠input type="checkbox"自带的逻辑,这样可以省去很多代码。

组件安装与使用

需要先安装vue3-dxui

yarn add vue3-dxui

或者

npm install vue3-dxui

全局main.ts中引入css

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import 'vue3-dxui/dxui/dxui.css'createApp(App).use(store).use(router).mount('#app')

按需引入

<script>
import { Checkbox } from 'vue3-dxui'export default {components: {Checkbox}
}
</script>

组件代码

<template><div class="dx-checkbox-warpper" :class="checkedDisabled ? 'dx-checkbox-disabled' : ''"><inputclass="dx-checkbox-input"type="checkbox"v-model="checkedValue":disabled="checkedDisabled"@change="onCheckedValueChange"/><span class="dx-checkbox-text"><slot /></span></div>
</template><script lang="ts">
import { ComponentInternalInstance, getCurrentInstance, ref, PropType } from 'vue'
import { Data } from './types'export default {props: {checked: {required: false,default: undefined,type: Boolean},defaultChecked: {required: false,default: false,type: Boolean},disabled: {required: false,default: false,type: Boolean},onChange: {required: false,default: undefined,type: Function}},setup(props: Data) {const currentInstance: ComponentInternalInstance | null = getCurrentInstance()const checkedValue = ref(props.checked || props.defaultChecked)const checkedDisabled = ref(props.disabled)const onCheckedValueChange = function (e: Event) {if (props.checked !== undefined) {checkedValue.value = props.checked}currentInstance?.emit('change', e)}return {checkedValue,checkedDisabled,onCheckedValueChange}}
}
</script><style lang="scss" scoped>
@import '@/scss/layout.scss';
.dx-checkbox-warpper {display: inline-block;margin-right: 8px;.dx-checkbox-text {padding: 0 8px;font-size: 14px;vertical-align: text-top;}input[type='checkbox'] {cursor: pointer;font-size: 14px;width: 16px;height: 16px;position: relative;}input[type='checkbox']:after {position: absolute;width: 16px;height: 16px;top: 0;content: ' ';color: $white-color;display: inline-block;visibility: visible;padding: 0px 3px;border-radius: 3px;background: $white-color;border: $border;box-sizing: border-box;}input[type='checkbox']:checked:after {content: '\2713';font-size: 12px;font-weight: 600;background-color: $blue-color;border: none;}
}.dx-checkbox-disabled {cursor: not-allowed;.dx-checkbox-text {padding: 0 8px;font-size: 14px;vertical-align: text-top;color: $grey-color;}input[type='checkbox'] {cursor: not-allowed;font-size: 14px;width: 16px;height: 16px;position: relative;}input[type='checkbox']:after {position: absolute;width: 16px;height: 16px;top: 0;content: ' ';color: $white-color;display: inline-block;visibility: visible;padding: 0px 3px;border-radius: 3px;background: $white-color;border: $border;box-sizing: border-box;}input[type='checkbox']:checked:after {content: '\2713';font-size: 12px;font-weight: 600;background-color: $grey-color;border: none;}
}
</style>

参数说明

参数说明
checked布尔值类型,默认值是undefined 父组件传递时,将会 让组件变为一个完全受控组件,只有当父组件的checked发生变化时,checkbox的状态才会发生改变
defaultChecked布尔值类型,默认值是false 父组件传递时,将会给与组件一个初始值,但不影响组件自身发生任何变化
disabled布尔值类型,默认值是false, 决定组件是否被禁用
onChange函数类型, 当组件状态发生改变,或想要发生改变时将会被调用,可以通过函数的第一个参数,event.target.checked 来获取将要改变的状态(如果父组件传递了checked,组件本身无法改变状态)

事件

事件名称说明
change当组件状态发生改变,或想要发生改变时将会被调用,可以通过函数的第一个参数,event.target.checked 来获取将要改变的状态(如果父组件传递了checked,组件本身无法改变状态)

关于dxui组件库

dxui组件库是我个人搭建的vue3 前端交互组件库,倾向于pc网站的交互模式。

  1. 如果你有任何问题,请在博客下方评论留言,我尽可能24小时内回复。
  2. dxui新上线的官网域名变更 http://dxui.cn
  3. npm 官方链接 https://www.npmjs.com/package/vue3-dxui
  4. 如果你想看完整源码 https://github.com/757363985/dxui


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部