【发布时间】:2020-07-17 08:46:59
【问题描述】:
我正在尝试重构一些代码并将一些代码移动到 mixin。但我得到了不同的行为。我希望在组件的所有实例之间共享一个对象。所以我写了类似下面的东西
<script>
export default {
registryManager: new RegistryManager()
}
</script>
在某些情况下,我通过this.$options.registeryManager 访问它。
现在我已将此代码移至 mixin。
混音
export default {
registryManager: new RegistryManager()
}
组件
<script>
import registryManager from './mixins/registryManager';
export default {
mixins: [registryManager]
}
</script>
假设您有 2 个组件 A、B。之前,组件 A 的所有实例都有一个 registryManager,组件 B 的所有实例都有一个单独的 registryManger。 使用 mixin,组件 A 和组件 B 的所有实例共享一个注册表管理器,因为无论有多少组件使用 mixin,都只会创建一个 mixin 实例 有什么方法可以为每个组件创建一个 mixin 实例以获得更早的行为?
【问题讨论】:
-
为您导入
mixin的每个组件创建一个新实例。所以不确定你想要达到什么目标? -
不确定是不是这样。所有组件都获得相同的注册表管理器实例。
-
有没有更简洁的方式在组件的所有实例之间共享变量?
-
是的,使用像
Vuex这样的状态管理库。如果 mixin 编写正确,它们的行为类似于pure函数。不确定我是否理解您的问题。 -
它被定义为一个选项有什么原因吗?它应该在某处被覆盖吗?
标签: vue.js vue-component vue-mixin