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

时间:2020-05-09 12:43:53

标签: mobx mobx-state-tree

在我看来,人们在交替使用modelprops。我尝试查找有关道具的文件,但失败了。有人可以告诉我区别吗?

2 个答案:

答案 0 :(得分:1)

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
  }) 

但这有什么用?好吧,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方法相同的方式扩展模型。

答案 1 :(得分:0)

模型需要属性。

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

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

titleString

done女巫是Boolean,默认为false

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