gpt4 book ai didi

javascript - 为什么在 Session 中存储 ReactiveVar 会将其转换为普通对象?

转载 作者:行者123 更新时间:2023-11-27 23:44:39 27 4
gpt4 key购买 nike

如果我将 ReactiveVar 存储在 Session 中,然后读取它,我会看到我的 ReactiveVar 被转换为对象。

var v = new ReactiveVar(4)
Session.set("v", v)
Session.get("v") //Object {curValue: 4, dep: Object}

我无法再获取设置它,因为它是一个普通对象。
有人知道它的意义吗?

PS:另一个 ReactiveVar 中的 ReactiveVar 效果很好

最佳答案

Sessionglobal named ReactiveDict .
所有反应式词典都有一个非常有趣的功能:它们stringify您的存储数据。
例如,他们这样做是为了将其存储在热代码推送中。

考虑以下代码:

var dict = new ReactiveDict()
dict.set('foo', { func : function() {} })
console.log(dict.get('foo'))

控制台将输出:

Object { }

那是因为 EJSON stringification (由 Meteor 定义)基于 JSON stringification ,它删除了对象方法和原型(prototype)以严格保留数据。

如果您想将来自 ReactiveVar 的无功值存储到 Session 中,则必须运行 Tracker计算来做到这一点:

Tracer.autorun(
() => Session.set('foo', foo.get())
)

如果您想通过方法或定义的原型(prototype)以 react 方式存储对象,请使用 ReactiveVar

关于javascript - 为什么在 Session 中存储 ReactiveVar 会将其转换为普通对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33335808/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com