我最近开始使用mobx-state-tree,但我有一个实际的问题。
我有一个具有types.identifier
字段的模型,这是资源的数据库ID,当我查询现有的东西时会填充它。
尽管在创建新实例时,在example that Michel has on egghead之后,我需要在初始状态下将初始id
传递给我的MyModel.create()
,但是,此ID仅是一旦将创建内容发布到API并获取生成的结果资源,就知道了。
我使用mobx-state-tree搜索了一个简单的例子,但找不到一个(建议?)。
这里的最佳做法是什么?我应该执行MyModel.create({id:'foobar'})并在发布到API时清除它(并在从API获得响应后更新实例)吗?
答案 0 :(得分:0)
这是mobx-state-tree当前设计的局限性。 Identifiers are immutable。
我已经看到解决此问题的一种策略是将持久层的id
存储在types.identifier
字段之外的单独字段中。然后,您将使用uuid之类的库来生成types.identifier
值:
import { v4 } from "node-uuid"
const Box = types
.model("Box", {
id: types.identifier,
name: "hal",
x: 0,
y: 0
})
const box = Box.create({ 'hal', 10, 10, id: v4() })