第一种方式:挂载到Vue的prototype上

把全局方法写到一个文件里面,然后挂载到Vue的prototype上,缺点是调用这个方法的时候没有提示

1、在js文件中导出方法

export function getDictLabelByValue (data, type) {
	//定义方法
	return arr;
}
export function getLabelByValue (data, type) {
	//定义方法
	return arr;
}

2、在main.js中引入

import { getLabelByValue, getDictLabelByValue } from '@/utils'
//挂载到Vue的prototype上,两种写法都可以
Vue.prototype.getLabelByValue= getLabelByValue
Vue.prototype.$getDictLabelByValue = getDictLabelByValue

3、在任意文件中使用该方法

this.getLabelByValue(arr,val)
this.$getDictLabelByValue(arr,val)

第二种方式:利用全局混入mixin

因为mixin里面的methods会和创建的每个单文件组件合并。这样做的优点是调用这个方法的时候有提示

Vue.mixin({ //直接在main.js中定义
  methods: {
    _addStar () { //在任意文件中使用该方法:this._addStar ()
      //方法逻辑
      return a
    },
    removeStar(){ //在任意文件中使用该方法:this.removeStar ()
      return b
    }
  }
})

1、mixin是什么?
mixin文件是一个对象,可以包含vue组件的任意成分。是分发Vue组件可复用功能的非常灵活的方式,当mixin被组件使用时,所有minxin里的属性/方法会与组件里的属性/方法混合。

单纯组件引用: 父组件 + 子组件 >>> 父组件 + 子组件
mixins: 父组件 + 子组件 >>> new父组件

2、mixin使用
在Vue组件中可以有mixins属性,该属性值类型为数组。将mixin引入,作为mixins数组的元素mixins: [mixin]

import {tabTodoWatch, tabTodoMixin} from "@/utils/mixins";
export default {
  name: "detail",
  components: {
    FileManage
  },
  mixins: [tabTodoWatch, tabTodoMixin],
  data(){
    return {
    }
  },
  methods(){
  //可以使用tabTodoWatch、tabTodoMixin中的方法
  //this.方法名();
  }
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐