Mobx状态树在模型上创建带有types.identifier字段的表单

时间:2018-11-07 14:49:06

标签: mobx mobx-state-tree

我最近开始使用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获得响应后更新实例)吗?

1 个答案:

答案 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() })