在Mobx中

时间:2016-04-18 15:37:12

标签: mobx

在应用初始化期间为商店补充水分的最佳方法是什么,特别是商店之间的参考?

例如,假设我有2个API呼叫:

/todos -> return array of todos [{id: 1, person_id: 2}]

/persons -> return array of Persons [{id: 2, name: 'John'}, {id: 3, name: 'Sam'}]

和Todo对象看起来像这样

class Todo { ... @observable person; ... }

有些Todos会引用一个Person,但不是所有的引用,并不是所有的人都会被引用,所以它不仅仅是废弃Persons api调用而只是返回Person引用Todos api电话。

但是,我们无法确定将首先返回Persons api调用,因此我们不能只假设在todos响应到达时链接Todo / Person引用(想要并行运行调用) ...

客户端代码中的额外逻辑是否只是确保我们在数据进入时设置所有引用?或者是否有任何人在经验中找到了更好的实践。

修改

我想的越多,我认为最可预测的逻辑是永远要么得到或创建一个参考对象。

所以在上面的例子中,如果首先出现Todos响应,我们会查找ID为2的Person对象,如果它存在的话,如果它不存在,则创建它并引用该对象。然后,当人员响应进来时,它会做同样的事情......寻找id为2的人,如果它存在,用新数据更新它,如果没有,创建它。

任何人都有更好的想法吗?

1 个答案:

答案 0 :(得分:1)

最简单的方法是按顺序加载对象并找到它们。之后,并行加载它们,并在您引用它们时查找或创建占位符。这是一种非常常见的模式。