2016-11-01 26 views
-1

我想知道如何构建由React/Redux支持的Web组件的应用程序。此示例https://github.com/facebook/react/blob/master/examples/webcomponents/index.html显示了如何将Web组件绑定到React组件。但那不完全是我需要的。我的目的是声明一系列“砖块”,例如x-dataview,x-sidebar,x-panel,x-modal,它们具有特定的行为,取决于通过属性提供的配置。除了他们公开的API。React/Redux用于构建Web组件

我想用React让他们活跃起来。所以当拥有这样的集合时,可以用静态HTML构建和配置应用程序。因此,消费者在处理HTML和暴露的API时不需要处理React源。

我一定能挂载产生反应,例如自定义元素,但它意味着每一个网络组件单独Redux的店,什么违反了终极版的第一个原则:

“你整个应用程序的状态存储在单个商店内的对象树 中。“

那么有可能通过任何机会实现上述描述而不会破坏React和Redux的哲学?

+0

不,这没有意义。 React不仅管理组件,还管理整个虚拟环境。这就是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“作为开发人员,您可以在Web组件中自由使用React,或在React中使用Web组件,或同时使用这两种组件“。但是将React附加到多个根可以感受到React哲学...... –

回答

1

如果这些组件彼此完全独立,则可以为它们中的每个组件创建一个单独的Redux存储。

通过这种方式,您可以添加/删除任何您想要的组件,并且您在报价中提到的原则仍然适用 - 您只是将每个组件都视为单独的应用程序。

但是,如果您希望组件彼此交谈,则必须在它们之间共享商店。