Таким образом, mobx отличается от других систем управления состояниями, общих для реакции, в том, что mobx поддерживает изменяемое состояние. Таким образом, вместо того, чтобы делать все дополнительные шаблоны, чтобы не допустить изменения вашего состояния, вы просто вносите изменения, меняя то, что хотите изменить, «простым» способом.
Например, скажем, у вас есть коллекция объектов todo, которые имеют свойства description
и isFinished
. В Mobx вы просто возьмете свой todo item и todoItem.isFinished = true
, чтобы установить для todo item значение true / флажок. Mobx позаботится обо всем остальном и уведомит соответствующие компоненты для обновления. В результате вам редко, если когда-либо нужно вызывать this.setState при использовании mobx. Любое изменение (в наблюдаемый объект) автоматически обновляет состояние.
Если вы не используете Mobx, вам необходимо убедиться, что вы никогда не мутировали значение, а вместо этого возвращали новую копию объекта, с той лишь разницей, что вы хотели изменить. Я полагаю, что именно поэтому вы используете методы объекта _
: они помогают вам вносить изменения без изменения значений (хотя, похоже, вы все еще случайно изменяете объекты).
В обмен на эту простоту вам необходимо обеспечить несколько вещей: объекты, которые вы изменяете, должны быть observable
, а компоненты, которые их отображают, должны быть observers
. (см. документацию mobx )
Также , помните, что mobx наблюдает при изменении свойств , а не при значениях переменной . Таким образом, mobx может наблюдать это изменение: foo.bar = "new value"
, но не это изменение: let foo = 'initial value'; foo = 'new value'
(обратите внимание на .
в первом примере).
Поскольку это тестовый вопрос, я не буду исправлять ваш код для вас, но я отошлю вас к примеру приложения mobx todo , и, надеюсь, это поможет.