Vue的文档.js提到智能自动更改跟踪plain Javascript objects:

当您将普通JavaScript对象作为其数据选项传递给Vue实例时,Vue.js将遍历它的所有属性,并使用Object将它们转换为getter/setter.定义属性.

由于Javascript的MapSet数据类型设计用于其内置的get/set方法,我如何让Vue跟踪对Maps和Sets内部状态的调用(以及相应的更改)?

推荐答案

Vue 3

是的.

Vue 3文档涵盖了Reactivity in depthBasic Reactivity APIs两个级别.

此外,还有四种"react 性"和"参照性".在使用Vue 3和ES6编码6个多月后,我仍在努力寻找适合我的使用模式.主要的问题是,使用react 性还是参考.

参考

参考是最简单的方法.例如,这就是computed返回的内容.它生成一个人的JavaScript值的react 版本,例如MapSet.

抓住你了.如果在JavaScript中使用参考,则需要添加.value来取消对该值的引用.在模板HTML中使用它不需要添加这些内容.这使得参考对于面向用户界面的东西来说非常完美,但对于内部编程来说就不那么完美了.

目前,我为任何提供参考的值或函数的名称添加了Ref个后缀.那就是我.如果同时使用参考react 性,很容易混淆(这里的TypeScript会有所帮助).

react 性

react 性是为 map 般的用途而设计的.可以将其初始化为:

const rve = reactive( new Map() )

访问这样的网站不需要.value美元.然而,react 性似乎没有枚举方法(例如.entries()),无法像 map 一样使用它.因此,它似乎是针对一个你知道一个对象的键的用例.但这可能会改变.

我希望react 性的方向是,它可以作为ES Map的1:1替代品.这对我来说很容易:Mapreact 性人,其余参考人.

我也希望这个名字能改变,让他们更亲近.RMap就可以了——也许我会做一个(从react 性派生并添加枚举方法).

总结

对于Vue 3,强有力的答案是"是".

然而,开发者指南可以变得更直接,明确说明 Select 参考react 性的逻辑,以及它们在运行时的优缺点,而无需阅读各种博客文章.


编辑:我目前倾向于Ref,但我试图在代码中很早就解开react 性,导致computed中只有一个.value.

Vue.js相关问答推荐

为什么具有Piniastore 的Vue组件的react 性需要计算(computed)属性?

roduction:main@HEAD失败阶段构建站点期间失败:构建脚本返回非零退出代码:2

在VueJS中卸载元素之前是否应该删除JavaScript事件收件箱?

在Vue 2中,是否可能在不创建组件的情况下注入代码块?

props至少应该定义它们的类型

云Firestore保存额外的用户数据

VueJS:在组件之间使用全局对象的最佳实践?

如何在 vue.js 构建中重命名 index.html?

当前端和后端位于虚拟 docker 网络中时,如何使用 axios 寻址后端主机

VueJS 使用 prop 作为数据属性值

在 Vuejs 中计算 DOM 元素之间距离的最佳方法是什么?

如何告诉 Vue-cli 我的应用程序的入口点在哪里?

输入文件 Select 事件在 Select 同一文件时未触发

根据路由动态插入 CSS 类到导航栏

try 通过 Vue.js 中的渲染传递props并观察它们

VueJS 2 + ASP.NET MVC 5

用于身份验证标头的 vue-resource 拦截器

vuejs 复制数据对象和删除属性也会从原始对象中删除属性

在 Vue 中使用事件修饰符 .prevent 提交表单而不进行重定向

隐藏特定标题及其在 vuetify 数据表中的对应列