В чем разница между моделью и props в `mobx-state-tree`? - PullRequest
1 голос
/ 09 мая 2020

Мне кажется, что люди используют model и props как синонимы. Пытаюсь найти документы о реквизите, но не удалось. Может ли кто-нибудь сказать мне разницу?

Ответы [ 2 ]

1 голос
/ 11 мая 2020

Метод 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.

0 голосов
/ 09 мая 2020

Модель нуждается в свойствах.

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

В приведенном выше примере мы создали модель Todo (модель MST) с двумя свойствами:

title, что является String

done - это Boolean и по умолчанию false

Поэтому, когда вы слышите props, они имеют в виду свойства модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...