`mobx-state-tree` 中的模型和道具有什么区别?
What's the difference between model and props in `mobx-state-tree`?
在我看来,人们可以互换使用 model
和 props
。我试图找到有关道具的文件但失败了。有人能告诉我区别吗?
模型需要属性。
const Todo = types
.model("Todo", {
title: types.string,
done: false
})
在上面的示例中,我们创建了一个具有两个属性的 Todo
模型(MST 模型):
title
这是一个 String
done
是 Boolean
并且默认为 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
views
和 actions
方法可以像 props
方法一样扩展模型。
在我看来,人们可以互换使用 model
和 props
。我试图找到有关道具的文件但失败了。有人能告诉我区别吗?
模型需要属性。
const Todo = types
.model("Todo", {
title: types.string,
done: false
})
在上面的示例中,我们创建了一个具有两个属性的 Todo
模型(MST 模型):
title
这是一个 String
done
是 Boolean
并且默认为 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
views
和 actions
方法可以像 props
方法一样扩展模型。