Web 组件发出的事件可能无法通过 React 渲染树正确传播:我可能会遇到什么问题?

Events emitted by a Web Component may not properly propagate through a React render tree: what possbile issues may I expect?

我从 https://reactjs.org/docs/web-components.html 读到 "Events emitted by a Web Component may not properly propagate through a React render tree",我想知道这个警告在实际中到底意味着什么。

我已经在 Polymer 1 和 2 上工作了一段时间,现在我有兴趣开始使用 React 并可能利用其他众所周知的可以与 React 顺利合作的库(例如 React Saga 和 Redux)。由于我深信使用 WebComponents 的优势,我正在尝试编写一个非常简单的 WebComponents 以导入到 React 项目中。

谷歌搜索如何在 React 项目中使用我自己的 Web 组件,我发现 https://reactjs.org/docs/web-components.html 指导我(“......在 React 中使用 Web 组件......”)但是阅读下面的几行我读到了粘贴在我的问题主题。为了使这个警告更加严重,我阅读了“......大多数使用 React 的人不使用 Web 组件......”。

所以我的直截了当的问题是:在 ReactJs 中使用我自己的 Webcomponets 是不可能的吗?这个警告是否意味着如果我开发多个 WebComponents 并尝试在 ReactJs 项目中导入和重用它们,我应该会遇到一些严重的问题?

显然,一个简单且孤立的项目可能不会太担心,因为我们可以按需测试,但主要目标是开发一个基于 Webcomponents(不是 Polymer,只是 Webcomponents)的组合组件库,并允许开发人员在多个项目中重用它们使用 ReactJs 的项目。

*** 已编辑 从 https://custom-elements-everywhere.com/ 我读到另一个与上面类似的警告:

"处理数据 React 将所有数据以 HTML 属性的形式传递给自定义元素。对于原始数据,这很好,但系统在传递丰富的数据(如对象或数组)时会崩溃。在这些情况下,您最终会得到像 some-attr="[object Object]" 这样实际上不能使用的字符串化值。

处理事件 因为 React 实现了自己的合成事件系统,所以它无法在不使用变通方法的情况下侦听来自自定义元素的 DOM 事件。开发人员将需要使用 ref 来引用他们的自定义元素,并使用 addEventListener 手动附加事件侦听器。这使得使用自定义元素变得很麻烦。

我对比较框架不感兴趣。如果我推动公司开发一个 webcomponets 的联合库(未来的读者可能会发现值得一读 https://medium.muz.li/what-is-a-design-system-1e43d19e7696)并假设我们可以基于ReactJs.

您完全可以使用 Webcomponents,没有您不能的内在原因。

唯一的问题(如您链接到的文档中所述)是您可能需要做一些 spade-work 才能让 imperative-style Webcomponents 与 React 的声明式风格很好地配合.