`mobx-state-tree` 中的模型和道具有什么区别?

What's the difference between model and props in `mobx-state-tree`?

在我看来,人们可以互换使用 modelprops。我试图找到有关道具的文件但失败了。有人能告诉我区别吗?

模型需要属性。

const Todo = types
    .model("Todo", {
        title: types.string,
        done: false
    })

在上面的示例中,我们创建了一个具有两个属性的 Todo 模型(MST 模型):

title 这是一个 String

doneBoolean 并且默认为 false

所以当您听到 props 时,他们指的是模型的属性。

model 方法创建一个新模型。它有两个参数:

  • 姓名
  • 属性(可选)

您可以创建新模型并指定属性。或者您可以先创建模型,然后使用 props 方法(props 是属性的缩写)'extend'。 TodoOne 和 TodoTwo 是一样的。

const TodoOne = types.model("Todo", {title: types.string, done: types.boolean})

const TodoTwo = types.model("Todo")
  .props({
    title: types.string, 
    done: types.boolean
  }) 

但这有什么用呢?那么 props 方法不会改变当前类型,它会创建一个新类型并扩展它。这意味着我们可以添加或覆盖现有的道具。

const Todo = types.model("Todo", {title: types.string, done: types.boolean})

const ColorfulTodo = Todo.props({color: types.string}) // returns a new model with a new property

const DefaultTodo = Todo.props({done: false}) // returns a new model with done property overwritten to default to false

viewsactions 方法可以像 props 方法一样扩展模型。