vue中的mixin理解

一、mixin中,有共用属性,也有共同的函数方法;

二、如果在当前组件中,不单独设置属性的话,就会调用共用的属性;

三、如果在当前组件中调用共用方法,但是共用数据是在其组件中设置,那么只会更改当前组件中的数据,不影响其它调用组件的数据;

四、尽管两个页面都调用了共同方法,及数据,也不会互相影响(即:mixin中的数据是不共享)

 第一步:创建一个组件页面,用来存放另外两个组件的载体

<template>
    <div>
        <mixin1></mixin1>
        <mixin2></mixin2>
    </div>
</template>

<script>
import mixin1 from './mixin1.vue'//导入组件1
import mixin2 from './mixin2.vue'//导入组件2
import mixin from './mixin'//导入配置共同属性与方法的mixin 文件

export default {
    mixins:[mixin],
    data(){
        return{

        }
    },
    methods:{

    },
    components:{
        mixin1,
        mixin2
    }
}
</script>


<style scoped>

</style>

第二步:创建mixin文件 

export default{
    data(){
        return{
            publicData:'今年是虎年'
        }
    },
    methods:{
        mixinFn(){
            console.log('您调用了mixin中的公用方法')
            this.publicData='今年一定要努力学习换更好的工作'
        }
    },
    mounted(){
        console.log(this.publicData)
    }
}

第三步:创建组件1,并调用自定义的方法更改共同的属性值

<template>
    <div>
        <h6>我是mixin1组件</h6>
        <div>mixin中公用的数据为:{{publicData}}</div>
        <el-button @click="mixinFn">我是mixin1组件用来测试mixin中的公用方法的</el-button>
    </div>
</template>

<script>
import mixin from './mixin'//导入mixin文件
export default {
    mixins:[mixin],
    data(){
        return{

        }
    },
    methods:{
        mixinFn(){
            this.publicData='恩,是的,今年确实是虎年,虎虎生威!'//更改mixin中定义的公共属性值
        }
    }
}
</script>

<style scoped>

</style>

第三步:创建组件2,只调用定义的公共方法

<template>
    <div>
        <h6>我是mixin2组件</h6>
        <div>mixin中公用的数据为:{{publicData}}</div>
        <!-- 这里的方法是在mixin中定义的公共方法 -->
        <el-button @click="mixinFn">我是mixin2组件用来测试mixin中的公用方法的</el-button>
    </div>
</template>

<script>
import mixin from './mixin'
export default {
    mixins:[mixin],

}
</script>

<style scoped>

</style>

以上得到的结果是:

        在组件 1 中,调用自定义的方法更改共同的属性值,只有组件1的值改变了,组件2的值并没          有改变,由此可见,mixin可用共用一个属性,但是不会共享

         在组件 2 中,直接调用的共用方法,也只是更改了组件 2 自身的值,并不会对组件 1 产生影响

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值