关于Vue + element plus包装Component理解
关于Vue + element plus包装Component理解
一、关于编写思路
我以设计el-select选择框进行举例说明
父组件与Component传递params与Function使用Props传递,Component使用计算属性computed实现父组件modelValue与子组件modelValue值一致
二、父组件调用时代码编写
父组件所需要进行引入所包装组件、向其传入参数以及方法
<template>
<Component
ref="componentRef"
v-model="data"
:params="params"
:api="queryApi"
/>
</template>
<script lang="ts" setup>
// 将组件引入父组件
import Component from '组件路径'
// 父组件绑定数据
const data = ref(Class T)
// 定义组件Ref 以便能够使用组件抛出的Function、data
const componentRef = ref()
// 函数查询时所用参数
const params = ref(Class T)
// 父组件一个获取数据函数 函数由调用父组件定义以便后续调用时能够进行通用
const queryApi = () => {
}
</script>
三、包装组件代码编写
<template>
<el-select
v-model="data"
clearable
style="width: 100%"
value-key="key"
>
<el-option
v-for="item in optionList"
:value="item"
:label="item.label"
:key="item.key"
/>
</el-select>
</template>
<script setup lang="ts">
// 引入一个默认查询方法
import query from '查询方法路径'
// 一个名为 update:modelValue 的事件,当本地 ref 的值发生变更时触发。
const emit = defineEmits(['update:modelValue'])
// 声明Props 组件才能知道父组件使用props传递来的数据
const props = defineProps({
// 父组件调用组件时 v-model 绑定的属性值
modelValue: {
default: () => null,
type: Object,
},
// 父组件传递进来的api
api: {
default: () => null,
type: Function,
},
// 父组件传递进来查询参数
params: {
default: () => null,
type: Object,
},
// 初始化加载
requestAuto: {
default: () => true,
type: Boolean,
},
}
// 选择框option列表
const optionList = ref()
const data = computed({
// 当访问到data数据时调用,会获取父组件传递过来的属性值modelValue,并返回modelValue
get: () => {
return props.modelValue
},
// 当data数据被赋值时调用,data赋值val,通过emit方法触发了update:modelValue事件,将新的值val传递给父组件
set: (val) => {
emit('update:modelValue', val)
},
})
// 编写加载选项列表函数
const loadOptions = () => {
// 判断是都有方法传入
if(api){
api(props.params).then(res => {
}).catch(err => {
}).finally(() => {
}
}else{
query(props.params).then(res => {
}).catch(err => {
}).finally(() => {
}
}
}
// 是否进行初始化加载
props.requestAuto && loadData()
// 使用defineExpose 将组件方法、属性暴露给父组件 在不自动加载时能够进行加载数据
defineExpose({ loadOptions })
</script>
关于Vue + element plus包装Component理解的更多相关文章
- 循序渐进VUE+Element 前端应用开发(26)--- 各种界面组件的使用(2)
在我们使用Vue+Element开发前端的时候,往往涉及到很多界面组件的使用,其中很多直接采用Element官方的案例即可,有些则是在这个基础上封装更好利用.更少代码的组件:另外有些则是直接采用第三方 ...
- 循序渐进VUE+Element 前端应用开发(17)--- 菜单资源管理
在权限管理系统中,菜单也属于权限控制的一个资源,应该直接应用于角色,和权限功能点一样,属于角色控制的一环.不同角色用户,登录系统后,出现的系统菜单是不同的.在VUE+Element 前端中,我们菜单结 ...
- 封装Vue Element的form表单组件
前两天封装了一个基于vue和Element的table表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...
- 循序渐进VUE+Element 前端应用开发(20)--- 使用组件封装简化界面代码
VUE+Element 前端应用,比较不错的一点就是界面组件化,我们可以根据重用的指导方针,把界面内容拆分为各个不同的组合,每一个模块可以是一个组件,也可以是多个组件的综合体,而且这一个过程非常方便. ...
- 基于vue(element ui) + ssm + shiro 的权限框架
zhcc 基于vue(element ui) + ssm + shiro 的权限框架 引言 心声 现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目 ...
- 【vue】vue +element 搭建及开发中项目中,遇到的错误提示
1. import Layout from '@/views/layout/Layout'; export default [ { // 配置路由,当路径为'/activePublic',使用组件ac ...
- 前端小菜鸡使用Vue+Element笔记(一)
关于使用Vue+Element的项目简介~ 最近因为项目组缺前端人员,所以自己现学现做页面,先把前后台功能调通 觉得前端可真的是不容易呀哎呀~ 首先记录一下相关的Vue入门的教程: vue环境搭建示例 ...
- vue+element ui 的表格列使用组件
前言:工作中用到 vue+element ui 的前端框架,有这个场景:很多表格的列有许多一样的,所以考虑将列封装为组件.转载请注明出处:https://www.cnblogs.com/yuxiaol ...
- Vue源码学习二 ———— Vue原型对象包装
Vue原型对象的包装 在Vue官网直接通过 script 标签导入的 Vue包是 umd模块的形式.在使用前都通过 new Vue({}).记录一下 Vue构造函数的包装. 在 src/core/in ...
- vue+element 实现商品sku效果
在网上搜索了很久,没有发现合适sku编辑的文章,只能自己写一个vue+element 的sku编辑功能.实现的效果如下图 除成本.售价.库存.货号这几个写死的属性外,可自行添加/删除商品属性,自行添加 ...
随机推荐
- CF1854E Games Bundles
乱搞题 设个 \(dp[i]\) 表示和为 \(i\) 的子序列个数,那么转移是容易的, \(dp[j]+=dp[j-i]\) ,然后就判下 \(dp[60]+dp[60-i]\) 是否大于 \(m\ ...
- Spark Structured Streaming(二)实战
5. 实战Structured Streaming 5.1. Static版本 先读一份static 数据: val static = spark.read.json("s3://xxx/d ...
- Python读取YAML配置数据
python编写的一些脚本需要一些简单配置时可以使用yaml文件进行设置.本文将介绍如何使用pyyaml进行读取配置数据. 首先安装pyyaml pip install pyyaml 简单使用下pyy ...
- .Net Core WebApi 使用 JWT 验证身份
.h2 { background-color: rgba(78, 110, 242, 1); color: rgba(255, 255, 255, 1); padding: 10px } 一.注册身份 ...
- frp内网穿透:基于centos8 云服务器和debian12客户端服务器
前言 入了一台本地工控机盒子,刷成了debian12系统,性能比云服务器要好一点,现在想要远程访问这台盒子,但是盒子又没有公网地址,所以想通过内网穿透的方式,通过云服务器转发请求实现内网穿透.原来体验 ...
- ComfyUI进阶篇:ComfyUI核心节点(三)
ComfyUI核心节点(三) 前言: 学习ComfyUI是一场持久战.当你掌握了ComfyUI的安装和运行之后,会发现大量五花八门的节点.面对各种各样的工作流和复杂的节点种类,可能会让人感到不知所措. ...
- Spring注解之依赖注入@Autowired和@Resource
Spring常见的DI方式 字段注入(Field Injection) 在字段上使用@Autowired/Resource注解 字段注入是日常开发中使用最多的一种注入方式,它的实现代码如下: @Aut ...
- js 获取年、月、周、当前日期第几周、这月有那几周
查看当前日期是第几周:https://wannianli.tianqi.com/today/zhou/ //获取完整的日期 var date=new Date; var y = date.getFul ...
- SafeLine Web 安全网关保护你的网站不受黑客攻击
SafeLine 简介 今天,推荐给大家的是一款在社区广受好评的网站防护工具 -- SafeLine Web 安全网关. 简单来说这是一个自带安全 buf 的 Nginx,它基于业界领先的语义分析检测 ...
- docker卸载分享
一.准备工作: 1.杀死docker有关的容器: docker kill $(docker ps -a -q) 2.删除所有docker容器: docker rm $(docker ps -a -q) ...