2016-11-01 5 views
-1

Мне интересно, как создать приложение веб-компонентов на базе React/Redux. В этом примере https://github.com/facebook/react/blob/master/examples/webcomponents/index.html показано, как привязать веб-компонент к компоненту React. Но это не совсем то, что мне нужно. Я намерен объявить коллекции «кирпичей», такие как x-dataview, x-sidebar, x-panel, x-modal, которые имеют определенное поведение в зависимости от конфигурации, предоставляемой через атрибуты. Кроме того, они предоставляют публичные API.React/Redux для создания веб-компонентов

Я хотел бы оживить их с помощью React. Поэтому, имея такую ​​коллекцию, вы можете создавать и настраивать приложение в статическом HTML. Таким образом, потребителю не требуется вообще обращаться к источникам React, имея дело с HTML и открытыми API.

Конечно, я могу установить Реагировать на таких пользовательских элементов, но это означает отдельный Redux магазин за веб-компонента, то, что нарушает первый принцип Redux:

«состояние вашего всего приложения хранится в дереве объектов в одном магазине. "

Возможно ли это, если возможно, достичь описанного выше, не нарушая философии Реакта и Редукса?

+0

Нет. Это не имеет смысла. React управляет не только компонентом, но и целым виртуальным dom. Это то, что делает React React. Создание нового корня React для каждого компонента поражает все преимущества React. Попытка сделать это с помощью Redux еще менее полезна. Обратите внимание, что HTML-компоненты имеют теневое dom, а React имеет виртуальный dom. Слишком много владений, пытающихся доминировать. Как React, так и Redux получают свои преимущества от однонаправленного потока данных, найденного ни в HTML, ни в HTML-компонентах. Кирпичи, которые вы хотите, это просто компоненты React, а Redux - это клей, который объединяет их в одно приложение. – DDS

+0

После чтения документов на REact/Redux у меня такое же впечатление. Как указано в Facebook https://facebook.github.io/react/docs/web-components.html «Как разработчик, вы можете использовать React в своих веб-компонентах или использовать веб-компоненты в React или оба «. но привязка Реагирует на несколько корней, из-за философии Реакт ... –

ответ

1

Если эти компоненты полностью независимы друг от друга, вы можете создать отдельный магазин Redux для каждого из них.

Таким образом вы можете добавить/удалить любой компонент, который вам нужен, и принцип, о котором вы упоминали в цитате, по-прежнему применяется - вы просто думаете о каждом из компонентов как отдельное приложение.

Если вы хотите, чтобы компоненты разговаривали друг с другом, вам придётся совместно использовать хранилище между ними.