Falcor 模型如何处理对字符串的引用?

Posted

技术标签:

【中文标题】Falcor 模型如何处理对字符串的引用?【英文标题】:How does Falcor Model handle references to strings? 【发布时间】:2016-05-01 11:53:05 【问题描述】:

javascript 中,strings are immutable,对字符串的引用相当于复制字符串 istelf。

在 Falcor 中,我可以使用 $type:"ref", value:[...] 来引用字符串。 Falcor 声称要保持数据一致性,因此如果模型包含引用,它们最终会指向同一个 JS 对象(因此保持一致性变得微不足道)。

来自Falcor docs on JSON Graph: JSON Graph 允许将图建模为 JSON,而不会引入重复项。不是将一个实体多次插入同一消息,而是将每个具有唯一标识符的实体插入到 JSON Graph 对象中的一个单个全局唯一位置。

但是,我看不出这如何适用于字符串。

比方说,我有一个这样的模型:

jsonGraph:
    foo: text: 'aaa',
    bar: text: $type: "ref", value: ["foo", "text"],

当我更新foo.text 时会发生什么? bar.text 也会更新吗?如果是,它是如何工作的?

【问题讨论】:

【参考方案1】:

当我更新foo.text 时会发生什么? bar.text也会更新吗?

如果您更新foo.text,然后更新get('bar.text'),您将获得foo.text 的当前值。如果您想这样想的话,好像两个地方的值都更新了。

但实际上没有bar.text 值,它只是一个引用,如果被引用的事物发生了变化,那么遵循该引用的事物将遇到该新值。

这样想:

var text = '123';
function getText() 
  return text;

getText() 的行为类似于对 text 的引用。如果您设置了text = 456,那么getText() 将开始返回不同的值,即使getText() 本身没有改变。

【讨论】:

以上是关于Falcor 模型如何处理对字符串的引用?的主要内容,如果未能解决你的问题,请参考以下文章

WPF 如何处理对空对象属性的绑定?

如何处理对 UITableView 的非单元格区域的点击

如何处理对客户端反应应用程序的外部重定向?

postgres 如何处理对某些列具有假值的视图的查询?

如何处理对 RecyclerView 列表项内部视图的点击。使用数据绑定和 kotlin

c#:如何处理对对象进行深度拷贝