有没有一种方法可以覆盖一些由本地组件在组件内部调用的 npm 的 mixin ?
我有一个 npm 包组件,其中
node_modules/somePackageName/components/footer.vue使用另一个来自的 mixins
node_modules/somePackageName/mixins/popup.js
其中popup.js包含以下方法:
methods: {
setPopupActiveStatus (val, blur = true) {
const isVisible = false
}
},
Run Code Online (Sandbox Code Playgroud)
我想从App.vue使用该footer.vue组件的地方覆盖它的行为,如下所示:
methods: {
setPopupActiveStatus (val, blur = true) {
const isVisible = true
}
},
Run Code Online (Sandbox Code Playgroud)
但它并没有像我想要的那样工作。
====更新====
以下是我如何根据 @Estradiaz 的回答解决我的问题的解释:
\n\n当 mixin 和组件本身包含重叠选项时,它们将使用适当的策略“合并”:
\n\n
\n- \n
数据对象进行递归合并,在发生冲突时,组件\xe2\x80\x99s 数据优先。
\n- \n
具有相同名称的钩子函数将合并到一个数组中,以便所有这些函数都将被调用。Mixin 钩子将在组件\xe2\x80\x99 自己的钩子之前被调用。
\n- \n
方法,组件和指令将合并到同一个对象中。当这些对象中存在冲突的键时,组件\xe2\x80\x99s 选项将优先。
\n
下面是一个由组件和 mixin 提供的方法的示例:
\nvar mixin = {\n methods: {\n foo: function () {\n console.log(\'Mixin Msg\')\n },\n }\n}\n\nvar vm = new Vue({\n mixins: [mixin],\n methods: {\n foo: function () {\n console.log(\'Component Msg\')\n },\n }\n})\n\nvm.foo() // => "Component Msg"\nRun Code Online (Sandbox Code Playgroud)\n\n所以我相信你应该能够通过在组件上提供一个同名的方法来“覆盖”mixin,并且它将优先
\n| 归档时间: |
|
| 查看次数: |
11464 次 |
| 最近记录: |