Vue 3
是的,确实如此。
Vue 3 文档在 Reactivity in depth 和 Basic Reactivity APIs 上介绍了这些内容。
另外还有“reactive”和“reference”四种。在使用 Vue 3 和 ES6 编码 6 个多月后,我仍在尝试找到适合我的使用模式。主要问题是,是使用Reactive还是Reference。
参考
Reference 是最简单的方法。例如,这就是 computed 返回的内容。它使一个人的 JavaScript 值的反应版本,例如Map 或 Set。
有一个问题。如果在自己的 JavaScript 中使用 Reference,则需要添加 .value 以取消引用该值。在模板 HTML 中使用它不需要添加。这使得Reference 非常适合面向 UI 的事物,但对于内部编程则不那么适合。
我目前将Ref 后缀添加到提供Reference 的任何值或函数的名称中。这就是我。如果同时使用 Reference 和 Reactive 很容易混淆(TypeScript 会有所帮助)。
反应性
Reactive 用于类似地图的用途。可以将其初始化为:
const rve = reactive( new Map() )
访问此类不需要.value。但是,Reactive 似乎没有允许它像 Map 一样使用的枚举方法(例如 .entries())。因此,它似乎针对的是您知道对象键的用例。但这可能会改变。
我希望 Reactive 能够被用作 ES Map 的 1:1 替代品。这对我来说很容易:Reactive 用于Maps,Reference 用于其余部分。
我也希望名字能改变,让他们更亲近。 RMap 会很好 - 也许我会做一个(从 Reactive 派生并添加枚举方法)。
总结
对于 Vue 3,强烈的回答是“是”。
但是,开发人员指南可以更直接,清楚地说明选择Reference 或Reactive 的逻辑,以及例如什么。它们的运行时优缺点是,无需阅读各种博客文章。
编辑:我目前倾向于Ref,但我尝试在代码中很早就解开反应性,导致computed中只有一个.value。