Метод model
создает новую модель. Он принимает два параметра:
- имя
- свойства (необязательно)
Вы можете создать новую модель и указать свойства. Или вы можете сначала создать модель, а затем «расширить» ее с помощью метода props
(props - это сокращение от properties). 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
.