【发布时间】:2020-05-09 12:43:53
【问题描述】:
在我看来,人们正在交替使用model 和props。我尝试查找有关道具的文档但失败了。谁能告诉我区别?
【问题讨论】:
标签: mobx mobx-state-tree
在我看来,人们正在交替使用model 和props。我尝试查找有关道具的文档但失败了。谁能告诉我区别?
【问题讨论】:
标签: mobx mobx-state-tree
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
views 和actions 方法可以像props 方法一样扩展模型。
【讨论】:
模型需要属性。
const Todo = types
.model("Todo", {
title: types.string,
done: false
})
在上面的示例中,我们创建了一个Todo 模型(MST 模型),它具有两个属性:
title 这是一个String
done 女巫是 Boolean,默认为 false
所以当您听到props 时,他们指的是模型的属性。
【讨论】: