vue学习(十)mixin 偷懒
架子
<div >{{msg}}
</div>
<script>
let app = new Vue({
el:'#app',
data:{
msg:'晓强'
},
})
</script>
mixin偷懒
<div >{{msg}} // 我在这就是想看 msg 的内容 所以 需要 mixin 就可以啦
</div>
<script>
const myMixin={
data(){
return{
msg:'myMixin偷懒'
}
}
};
let app = new Vue({
el:'#app',
data:{
title:'晓强'
},
mixins : [myMixin]
})
</script>
我们不仅可以偷懒数据 也可以偷懒方法
<div >{{msg}}
</div>
<script>
const myMixin={
data(){
return{
msg:'myMixin偷懒'
}
},
created(){
this.SayHello();
},
methods:{
SayHello(){
console.log('hello')
}
}
};
let app = new Vue({
el:'#app',
data:{
title:'晓强' // 如果这个是 msg 就显示的是晓强
},
mixins : [myMixin]
})
</script>
二mixin混入技术应用
最先开始的架子
<div >{{msg}}
</div>
<script>
// 模态框
const Modal={
template:`<div v-if="isShow"><h3>模态框组件</h3></div>`,
data(){
return{
isShow:false
}
},
methods:{
toggleShow(){
this.isShow = !this.isShow
}
}
};
// 提示框
const Tooltip={
template:`<div v-if="isShow"><h2>提示框组件</h2></div>`,
data(){
return{
isShow:false
}
},
methods:{
toggleShow(){
this.isShow = !this.isShow
}
}
};
let app=new Vue({
el:'#app',
data:{
msg:'mixin'
}
})
</script>
我们可以发现 上面 的模态框 和提示框 有重复的代码
提取
const toggleShow = {data() {
return {
isShow: false
}
},
methods: {
toggleShow() {
this.isShow = !this.isShow
}
}
};
整体代码
<body><!--一个是模态框 一个是提示框 被弹出-->
<!--他们两个看起来不一样 用法不一样 但是逻辑是一样的(切换boolean)-->
<div >
{{msg}}
</div>
<script>
/*
* 全局的mixin要格外小心 因为每个组件实例创建时都会被调用
* Vue.mixin({
* data(){
*
* }
* })
* */
const toggleShow = {
data() {
return {
isShow: false
}
},
methods: {
toggleShow() {
this.isShow = !this.isShow
}
}
};
// 模态框
const Modal = {
template: `<div v-if="isShow"><h3>模态框组件</h3></div>`,
mixins: [toggleShow]
};
// 提示框
const Tooltip = {
template: `<div v-if="isShow"><h2>提示框组件</h2></div>`,
mixins: [toggleShow]
};
let app = new Vue({
el: '#app',
data: {
msg: 'mixin'
},
components: {
Modal,
Tooltip
},
template: `
<div>
<Modal ref="motai"></Modal>
<Tooltip ref="tooltip"></Tooltip>
<button @click="handleModel">模态框</button>
<button @click="handleTooltip">提示框</button>
</div>
`,
methods: {
handleModel() {
this.$refs.motai.toggleShow()
},
handleTooltip() {
this.$refs.tooltip.toggleShow()
}
},
})
</script>
以上是 vue学习(十)mixin 偷懒 的全部内容, 来源链接: utcz.com/z/378764.html