2016-01-11 4 views
3

Я создаю пользовательский интерфейс приложения, и я изучаю обновление пользовательского интерфейса без необходимости использования состояний. Было бы грубо корректным следующее утверждение?Использование React без состояний

«Нам не нужны государства, так как все его выполнение вызывает метод визуализации автоматически на компоненте, когда что-то внутри государства изменяется. Мы можем добиться такой же реализации, вызвав метод render на соответствующем компоненте самостоятельно.

Мы бы еще достичь всего того же преимущества, React (виртуальные DOM, рендеринг, рисование оптимизаций и т.д.) "

+0

Любое приложение нуждается в «состоянии», без «состояния» у вас нет данных, и без данных вы ничего не можете сделать. Что вы подразумеваете под «без государства»? –

+0

@MadaraUchiha Im, являющийся специфическим для React.js. Компонент React может иметь неизменяемое состояние, которое сохраняет значение/s. Всякий раз, когда происходит изменение состояния, компонент повторно отображается автоматически. – Kayote

+0

Правильно, как вы планируете предоставлять свои компоненты без такого состояния? –

ответ

6

Это технически правильно, что вам не нужно использовать внутреннее состояние компоненты РЕАКТА в создайте приложение React. Конечно, данные должны жить где-то, поэтому вам нужен механизм, который может передавать все данные в компонент верхнего уровня (где он будет просачиваться во все остальные компоненты) при изменении данных.

Это основная идея флюса (и многие другие шаблоны, предназначенные для хранения хранилищ за пределами хранилища). У вас есть один или несколько магазинов, и магазины предоставляют события изменения, когда их данные изменяются. Затем эти данные передаются в приложение через реквизиты.

function render(data) { 
    ReactDOM.render(
    <Application data={data} />, 
    containerNode 
) 
} 

myDataStore.on('change', render); 

На практике, однако, это может быть трудно сделать это из-за того, как работает JavaScript. Код, подобный приведенному выше, заставит React повторно отобразить все дерево компонентов каждый раз, когда изменяется myDataStore, и без хороших крючков shouldComponentUpdate это может быть проблемой производительности. Использование неизменяемых значений помогает упростить реализацию хороших методов shouldComponentUpdate.

Что вы обычно видите в большем React приложение, которое использует снаружи из-React хранения данных представляет собой сочетание:

  • Один или более "container" components, которые несут ответственность за получение данных от магазинов и передавая их своим детям. Иногда имеет смысл помещать контейнеры где-нибудь , другие, чем сама вершина дерева компонентов (например, у вас может быть несколько контейнеров в одном приложении)
  • Многоразовые/"презентационные" компоненты, которые не подключаются к хранилищу данных, но предоставляют некоторые другие преимущества (например, стили черного цвета или интерактивный виджет). В этих случаях часто имеет смысл поддерживать любое не зависящее от приложения состояние внутри самого компонента.
+0

Спасибо @MichelleTilley, я просто задал этот самый вопрос в своем комментарии на форуме обсужденияReact.Вот ссылка: Любые дальнейшие рекомендации будут высоко оценены. https://discuss.reactjs.org/t/getting-to-grips-with-component-heirarchy-in-react/2887 – Kayote

+0

Я принимаю первый пункт, который вы упомянули. I.e, там будет несколько контейнеров верхнего уровня. Спасибо. – Kayote

+0

Принимая этот ответ, поскольку дальнейшие обсуждения не были внесены в этот вопрос. – Kayote

Смежные вопросы