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

Ezo*_* T. 4 mobx mobx-state-tree

在我看来,人们正在互换使用modelprops。我尝试查找有关道具的文档但失败了。有人可以告诉我有什么区别吗?

Wil*_*ill 5

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

  • 姓名
  • 属性(可选)

您可以创建新模型并指定属性。或者您可以先创建模型,然后使用props方法“扩展”它(props 是属性的缩写)。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
  }) 

Run Code Online (Sandbox Code Playgroud)

但这有什么用呢?该props方法不会改变当前类型,它会创建一个新类型并扩展它。这意味着我们可以添加或覆盖现有的 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

Run Code Online (Sandbox Code Playgroud)

views和方法actions可以用与 方法相同的方式扩展模型props