一.应用场景
多个组件共用一个方法时可以用 mixin
抽取到一个js文件中,作为共用方法
二.实现方法
1.提取js共用方法文件

- export const common = {
- ?? ?
- ?? ?// 组件共用属性 ----------------------------------
- ?? ?data() {
- ?? ??? ?return {
- ?? ??? ??? ?age: 18?? ??? ??? ? ? ? ? ?// 设置一个共用属性
- ?? ??? ?}
- ?? ?},
- ?? ?// ---------------------------------------------
- ?? ?
- ?? ?// 组件共用方法 ---------------------------------------------
- ?? ?methods: {
- ?? ??? ?showName() {
- ?? ??? ??? ?alert(this.name) ??? ??? ?// 弹出组件中name属性的共用方法
- ?? ??? ?}
- ?? ?},
- ?? ?// --------------------------------------------------------
- ?? ?
- ?? ?// 组件挂载时的共用方法 ----------------------
- ?? ?mounted() {
- ?? ??? ?console.log('初始化方法') ? ?// 挂载时调用
- ?? ?},
- ?? ?// ----------------------------------------
- ?? ?
- }
2.引入
- <template>
- ?? ?<div>
- ?? ??? ?<div>组件</div>
- ?? ??? ?<button @click="showName">弹出姓名</button>
- ?? ?</div>
- </template>
-
- <script>
-
- ?? ?// 引入js文件中的方法对象 --------------------
- ?? ?import {common, } from '../pub_js/common.js'
- ?? ?// ----------------------------------------
- ?? ?
- ?? ?export default {
- ?? ??? ?name: 'Student',
- ?? ??? ?data() {
- ?? ??? ??? ?return {
- ?? ??? ??? ??? ?name: '张三'
- ?? ??? ??? ?}
- ?? ??? ?},
- ?? ??? ?
- ?? ??? ?// 调用 mixin 将组件js与共用js合并 ---
- ?? ??? ?mixins: [common, ],
- ?? ??? ?// --------------------------------
- ?? ??? ?
- ?? ?}
- </script>
三.注意事项
- 1.
data
中的属性合并后,如果有命名冲突的情况,以组件中的属性为主,【组件属性覆盖共用js中的属性】 - 2.
methods
中的方法合并后,如果有命名冲突的情况,以组件中的方法为主,【组件方法覆盖共用js中的方法】 - 3.
mounted等
生命周期方法合并后,会先调用共用js中的的生命周期函数,再调用组件中的生命周期函数,【不会进行覆盖】 - 4.如果是全局共用的方法,可以直挂载到main.js中↓
- import Vue from 'vue'
- import App from './App.vue'
-
- Vue.config.productionTip = false
-
- // 挂载全局共用方法 -----------------------
- import {common, } from 'pub_js/common.js'
- Vue.mixin(common)
- // --------------------------------------
-
- new Vue({
- ? render: h => h(App),
- }).$mount('#app')
到此这篇关于Vue组件公用方法提取mixin实现的文章就介绍到这了,更多相关Vue组件提取内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!