Реагировать на Facebook поощряет отделить изменчивое (state
) и неизменяемое (props
) состояние:
Постарайтесь сохранить как можно больше ваших компонентов без гражданства. Делая это, вы изолируете состояние в наиболее логичном месте и минимизируете избыточность, что упрощает рассуждение о вашем приложении.
При изменении состояния вы должны вызвать setState
для запуска виртуального DOM diff, что приведет к реальному обновлению DOM только тогда, когда это необходимо.
Существует способ инициировать обновление DOM вручную, вызывая forceUpdate
, но обескуражен:
Обычно следует избегать использования
forceUpdate()
и читать толькоthis.props
иthis.state
вrender()
. Это делает ваше приложение намного проще и эффективнее.
Однако все примеры React + Backbone, которые я видел , игнорируют этот совет и сохраняют модели и коллекции в props
и вызывают forceUpdate
:
- http://www.thomasboyt.com/2013/12/17/using-reactjs-as-a-backbone-view.html
- https://github.com/usepropeller/react.backbone/blob/master/react.backbone.js
- https://gist.github.com/ssorallen/7883081
- http://eldar.djafarov.com/2013/11/reactjs-mixing-with-backbone/
В собственном примере Even React используется forceUpdate
:
Есть ли лучший способ, и какие выгоды он даст?