首页 > 其他分享 >vue的mixin和extend

vue的mixin和extend

时间:2024-03-05 14:35:04浏览次数:25  
标签:混入 vue 函数 extend 钩子 mixin 组件

使用场景:
mixin:通用逻辑共享:当多个组件需要共享相同的方法,数据和属性时,可以通过mixin实现
extend:如果想基于现有组件创建一个新组件,并且新组件还能继承现有组件的数据,方法和属性时,可以通过extend实现,extend类似于class
使用实例:
mixin部分代码

使用mixin


当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项,因此要了解“混合规则”
(1)针对钩子函数:同名钩子函数不会被覆盖,会合并到一起,并且都被调用,但混入的钩子函数将在组件本身额钩子函数之前被调用

(2)针对对象:例如data,computed,methods等,同样会被合并到一起,如果混入的对象属性名称和组件本身的冲突,最终取组件本身的属性键值对


(3)一个组件可以混入多个mixin对象,当多个混入对象中有属性名冲突时,则后引入的会覆盖前面引入的;但是钩子函数不会被覆盖,仍然全部都被调用,且按混入的先后顺序被调用

钩子函数调用:

extend部分代码:

继承规则:extend和mixin不同,不执行选项的合并或者混合,而是直接覆盖,例如 B组件 继承 A组件,一旦B组件中新增的data数据,computed,method等对象属性和A组件的冲突,则B覆盖A;
钩子函数和mixin一样合并到一起,且extend的钩子函数先被调用

当一个组件中同时使用了extend和mixin时,其优先级为: extend > mixin > 组件本身; 钩子函数也是按这个优先级被调用

标签:混入,vue,函数,extend,钩子,mixin,组件
From: https://www.cnblogs.com/s-w-f/p/18050685

相关文章

  • 在vue项目中使用scss预处理器
    从Node.js12版本开始,`node-sass`被标记为不再维护,并且从npm上已经被移除。现在,推荐使用`sass`包替代`node-sass`。`sass`包是Sass的JavaScript实现,它比`node-sass`更快速、更现代化,并且与最新版本的DartSass兼容。在Vue项目中使用Sass,你应该安装sass包......
  • 使用Git拉取并运行vue项目
    从远程仓库中拉取vue项目。一、复制项目在远程仓库的代码地址,将它克隆到本地:gitclonehttp链接(项目代码地址)二、安装依赖1.进入项目所在的目录,将node_modules和package-lock.json2.选中当前路径,然后输入【cmd】,回车3.在命令提示符中依次输入一下代码:npmcacheclean-fo......
  • .net core 6.0后台 Vue2前台 导出Excel文件
    要导出这样一个Excel表格:1.后端API下载安装包:EPPlus2.后端代码点击查看代码///<summary>///接口///</summary>///<returns>结果</returns>[HttpGet]publicIActionResultExportTab(){varli......
  • vite+vue3 遇到报错 Uncaught SyntaxError: Cannot use import statement outside a m
    按照报错找到了对应的位置import{createApp}from'/node_modules/.vite/deps/vue.js?v=d0a669cf'importAppfrom'/src/pages/project1/App.vue'//import'./index.css'//importrouterfrom"./router"//createApp(App).mount(&#......
  • vue项目的优化方法有哪些?
    Vue项目的优化是一个综合考虑多方面因素的过程,包括代码、性能、资源、打包等方面。下面是一些常见的Vue项目优化方法:代码层面优化:组件拆分:将大型组件拆分成小型组件,提高组件的复用性和可维护性。避免不必要的计算:尽量减少不必要的计算,避免重复计算。使用异步组件:对于......
  • 管理端根据角色,获取动态路由,动态引用页面的时候,Vue2和vue3的使用方法
    1、vue2使用的方法,重点注意引用组件的时候使用的requirelettemp=[];children.map((itemChild)=>{letvisible=(itemChild.menuType=='F')?true:false;temp.push({path:itemChild.path,component:resolve=>require([@/views/${itemChild.component}],resolve),meta:......
  • springboot3+vue3(三)接口参数校验Spring Validation框架
    1、引入Validation依赖<!--参数校验依赖validation--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>va......
  • ruoyi-vue axios通过接口请求wav、mp3音频二进制数据
    实现方式在axios请求中注明responseType:'blob',headers的Accept:'audio/wav'不清楚要不要写,我加上了(请求接口)在接口返回值中,使用Blob的构造方法将数据转换成Blob对象(封装Blob对象&形成URL)将得到的Blob对象通过URL.createObjectURL(audioBlob)形成url,该url类似于bl......
  • Vue源码解读:render和VNode
    Vue2.0相比Vue1.0最大的升级就是利用了虚拟DOM。在Vue1.0中视图的更新是纯响应式的。在进行响应式初始化的时候,一个响应式数据key会创建一个对应的dep,这个key在模板中被引用几次就会创建几个watcher。也就是一个key对应一个dep,dep内管理一个或者多个watcher......
  • springboot3+vue3(二)注册接口
     为了方便实体类操作,这里添加一下lombok的依赖,添加好以后右键重新加载mavenlombok注解含义大全:https://www.jianshu.com/p/41c4a226e955<!--lombok依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifa......