[前端开发]Vue mixin
2024-10-09 05:52:49
- 两个非常相似的组件,他们的基本功能是一样的,但他们之间又存在着足够的差异性,此时的你就像是来到了一个分岔路口:我是把它拆分成两个不同的组件呢?还是保留为一个组件,然后通过props传值来创造差异性从而进行区分呢?
- 这时就可以使用Mixin。Vue 中的Mixin对编写函数式风格的代码很有用,因为函数式编程就是通过减少移动的部分让代码更好理解。Mixin允许你封装一块在应用的其他组件中都可以使用的函数。如果使用姿势得当,他们不会改变函数作用域外部的任何东西,因此哪怕执行多次,只要是同样的输入你总是能得到一样的值,真的很强大
- 具体应用在电商app中,
better-scroll
中,每次mounted时需要通过加载图片的高度刷新容器高度,在Home和Detail中都用到了同样的方法,新建一个mixin.js
import {debounce} from 'common/utils'
export const itemListenerMixin = {
data(){
return {
itemImgListener:null
}
},
mounted(){
let newRefresh = debounce(this.$refs.scroll.refresh,100)
this.itemImgListener = () =>{
newRefresh()
}
this.$bus.$on('itemImgLoad',this.itemImgListener)
console.log('haha');
}
}
- 在Home和Detail中引入、注册即可
import {itemListenerMixin} from 'common/mixin'
mixins:[itemListenerMixin]
mixin的执行顺序问题
- 当mixin中和组件中同时定义了相同的生命周期钩子,mixin会被先注册,此时组件中的生命周期钩子就可以对其进行修改,mixin也会被先推入数组,组件次之
//mixin
const hi = {
mounted() {
console.log('mixin')
}
}
//component
new Vue({
el: '#app',
mixins: [hi],
mounted() {
console.log('component')
}
});
//output in console
> component
> component
最新文章
- KAOS模型
- resignFirstResponder
- tomcat安全配置(二)
- oracle group by中cube和rollup字句的使用方法及区别
- Linux下c函数dlopen实现加载动态库so文件代码举例
- php self
- XlFileFormat
- 字符串匹配——Brute-Force 简单匹配算法
- 《剑指offer》 相应 在线测试地址
- windows修改注册表添加开启自启动
- python列表中的pop函数
- QT中定时器
- elasticsearch-head连接不上es
- LeetCode14.最长公共前缀
- 微服务之SpringCloud基础
- LG3275 【[SCOI2011]糖果】
- 客户端负载均衡Feign之三:Feign补充
- UVA-10271 Chopsticks (线性DP)
- 按Right-BICEP要求的测试用例
- 009杰信-创建购销合同Excel报表系列-2-建立购销合同(增删改查)
热门文章
- golang 线上项目部署折腾之一
- 图像处理之OpenCV - 缩放/旋转/裁剪/加噪声/高斯模糊
- Codeforces Round #623 (Div. 2, based on VK Cup 2019-2020 - Elimination Round, Engine) B. Homecoming
- 题目分享Q
- 使用python实现模拟掷骰子数据分析
- 自定义Element父子不关联的穿梭树
- CTF-Pwn-[BJDCTF 2nd]diff
- 封锁阳光大学(染色)P1330
- TSP变形(三进制状压)
- 面向开发者的Docker实践