关于vue mixins

var M = new Vue({
    methods:{
        Foo(...arg){
            return arg.map(item=>item+1)
        }
    }
})
var A = new Vue({
    mixins:[M]
    //others
})
var B = new Vue({
    mixins:[M]
    //others
})
var C = new Vue({
    mixins:[M]
    //others
})
var D = new Vue({
    methods:{
        Foo(..arg){
            return arg.map(item=>item+1).filter((item,index)=>index%2==0)
        }
    }
    //others
})

假如A、B、C组件公用了某个方法(Foo),可以把Foo抽出来放到mixin(M)中用来复用代码。但是假如又有个D组件,D中实现的Foo方法与M中的Foo方法不完全一样。我除了像上面那样直接重写Foo外,能否引入M,在M的基础上“添”代码呢?(M中的Foo是个纯函数)

不知道说清楚了没有。

阅读 2.2k
2 个回答
const D = {
  methods: {
    M.methods.Foo.apply(this, args);
    // 其它代码
  },
};

把D中的函数改个名字行吗?如果还是想用Foo这个名字的话就装饰一下?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题