Vue的文档.js提到智能自动更改跟踪plain Javascript objects:
当您将普通JavaScript对象作为其数据选项传递给Vue实例时,Vue.js将遍历它的所有属性,并使用Object将它们转换为getter/setter.定义属性.
由于Javascript的Map
和Set
数据类型设计用于其内置的get
/set
方法,我如何让Vue跟踪对Map
s和Set
s内部状态的调用(以及相应的更改)?
Vue的文档.js提到智能自动更改跟踪plain Javascript objects:
当您将普通JavaScript对象作为其数据选项传递给Vue实例时,Vue.js将遍历它的所有属性,并使用Object将它们转换为getter/setter.定义属性.
由于Javascript的Map
和Set
数据类型设计用于其内置的get
/set
方法,我如何让Vue跟踪对Map
s和Set
s内部状态的调用(以及相应的更改)?
是的.
Vue 3文档涵盖了Reactivity in depth和Basic Reactivity APIs两个级别.
此外,还有四种"react 性"和"参照性".在使用Vue 3和ES6编码6个多月后,我仍在努力寻找适合我的使用模式.主要的问题是,使用react 性
还是参考
.
参考
是最简单的方法.例如,这就是computed
返回的内容.它生成一个人的JavaScript值的react 版本,例如Map
或Set
.
抓住你了.如果在JavaScript中使用参考
,则需要添加.value
来取消对该值的引用.在模板HTML中使用它不需要添加这些内容.这使得参考
对于面向用户界面的东西来说非常完美,但对于内部编程来说就不那么完美了.
目前,我为任何提供参考
的值或函数的名称添加了Ref
个后缀.那就是我.如果同时使用参考
和react 性
,很容易混淆(这里的TypeScript会有所帮助).
react 性
是为 map 般的用途而设计的.可以将其初始化为:
const rve = reactive( new Map() )
访问这样的网站不需要.value
美元.然而,react 性
似乎没有枚举方法(例如.entries()
),无法像 map 一样使用它.因此,它似乎是针对一个你知道一个对象的键的用例.但这可能会改变.
我希望react 性
的方向是,它可以作为ES Map
的1:1替代品.这对我来说很容易:Map
人react 性
人,其余参考
人.
我也希望这个名字能改变,让他们更亲近.RMap
就可以了——也许我会做一个(从react 性
派生并添加枚举方法).
对于Vue 3,强有力的答案是"是".
然而,开发者指南可以变得更直接,明确说明 Select 参考
或react 性
的逻辑,以及它们在运行时的优缺点,而无需阅读各种博客文章.
编辑:我目前倾向于Ref
,但我试图在代码中很早就解开react 性,导致computed
中只有一个.value
.