在vue的官方文档中,我在edge cases部分找到了关于$root
的用法。 “边缘案例”使我觉得使用this.$root
(或this.$parent
)来突变子组件中的根实例的数据是不正常或不建议的。
我知道vuex是大型和复杂的vue应用程序的最佳状态管理选项,它具有更高级的功能和更好的调试功能。但这并不能说服我this.$root
不好。
正如文档所述,this.$root
何时更改根数据无法跟踪何时以及何处发生数据更改,因此不利于调试。但是我想知道的是:
this.$root
方法在调试方面是否只有缺点? 除与调试相关的问题外,使用this.$root
更改根数据还有其他问题吗?如果可以,那么任何人都可以给我举一个小例子来说明这个问题,因为我想不出任何避免使用它的情况(假设我的vue应用程序没有那么大和复杂)。预先感谢!
答案 0 :(得分:2)
这都是关于好的和坏的体系结构。您应该始终设计代码,以便共享最少的数据(甚至与Vue无关)。
您的vue组件具有私有和公共方法和字段。认为组件中的所有方法都是私有的。并且$ emit和道具要公开。访问私有方法和字段总是一个坏主意,为什么?:
data
。setInterval(() => $root.setDataTime(
当前时间$ {Date.now()} ), 1000)
的操作。您检查了更改,在vuex或组件中都没有提交。