我有这样一个需求:
有一个组件是一个基础组件,很多页面都可能用到,
但是有些页面可能会有一些属于自己的特定的逻辑,
这个时候我想到了继承和mixin,将逻辑不一样的地方写到mixin里面
或者继承他的子类,开发中我选择使用了vue提供的mixin,但是存在一个
问题,vue怎么通过判断路由信息来给组件混入不同的mixin呢?或者动态继承也可以。
个人觉得还是动态继承最好,因为可以覆盖父类里面的方法,vue的mixin优先使用父类的方法,无法覆盖。
*解释一下:我试过mixin数组中调用工厂函数然后返回一份mixin,通过在工厂函数中判断路由信息来决定要不要给返回这份mixin,这样就达到了个不同的页面加上属于自己的业务逻辑代码,但是存在一个问题,我在这个工厂函数所在的模块导入了router对象实例,但是当mixin中的工厂函数被调用的时候拿不到对应的路由信息,里面的数据都是null,应该是这个函数调用的太早了
如果mixin组件只有JS部分,那很好搞,你搞个工厂函数返回一个对象即可,根据不同的参数返回不同的对象。
但是mixin...它本身解决的是组件公共的部分,你好像跑歪了...