vuejs实现element-plus
组件的二次封装,下面介绍一下表单的label
和对应的选择器、输入框的封装代码。
el-input子组件的封装
<template>
<div class="base-input flex align-center">
<div v-if="props.blockName">{{ props.blockName }}</div>
<el-input placeholder="请输入" v-model="chanValue"></el-input>
</div>
</template>
<script setup>
import { computed } from 'vue'
const props = defineProps({
blockName: {
type: String,
default: ''
},
value: {
type: String,
default: ''
}
})
const emits = defineEmits(['update:value'])
// 通过重写计算属性的set和get方法,将计算属性的结果绑定在输入框的model中
const chanValue = computed({
get: () => props.value,
set: (val) => {
emits('update:value', val)
}
})
</script>
el-select子组件的封装
<template>
<div class="base-select flex align-center">
<div>{{ props.blockName }}</div>
<el-select
v-model="chanValue"
:multiple="props.multiple"
:filterable="props.filterable"
:allow-create="props.allowCreate"
:placeholder="placeholder"
>
<el-option v-for="item in props.options" :key="item.value" :value="item.value" :label="item.label" />
</el-select>
</div>
</template>
<script setup>
import { computed } from 'vue'
const props = defineProps({
blockName: {
type: String,
default: ''
},
value: {
type: String,
default: ''
},
placeholder: {
type: String,
default: '请选择'
},
options: {
type: Array,
default() {
return [{ value: '', label: '' }]
}
},
// 一下三个属性配合多选使用
multiple: {
type: Boolean,
default: false
},
filterable: {
type: Boolean,
default: false
},
allowCreate: {
type: Boolean,
default: false
}
})
const chanValue = computed({
get: () => props.value,
set: (val) => {
emits('update:value', val)
}
})
const emits = defineEmits(['update:value'])
</script>
组件的调用
<AInput blockName="传入label名称" v-model:value="双向绑定的数据" />
<ASelect blockName="传入label名称" :options="选择器的选项值" v-model:value="双向绑定的数据" />
以上是编程学习网小编为您介绍的“vuejs实现element-plus组件的二次封装”的全面内容,想了解更多关于 vuejs 内容,请继续关注编程基础学习网。
沃梦达教程
本文标题为:vuejs实现element-plus组件的二次封装
基础教程推荐
猜你喜欢
- ie6 z-index不起作用的完美解决方法 2023-12-22
- Ajax请求WebService跨域问题的解决方案 2024-04-15
- Ajax客户端异步调用服务端的实现方法(js调用cs文件) 2023-02-15
- 解决ajax的delete、put方法接收不到参数的问题方法 2023-02-23
- CSS实现照片堆叠效果的实例代码 2024-01-21
- vue项目中mounted和created有什么区别 2025-01-19
- mac笔记本电脑删除文件后如何自动排列(快捷键介绍) 2024-12-14
- Ajax()方法如何与后台交互 2022-12-15
- 一个简单的弹性返回顶部JS代码实现介绍 2024-04-03
- JavaScript开发小技巧之数组技巧 2024-12-08