在 React 中将 VideoJs 组件渲染为 HTML

Render VideoJs component as HTML in React

我在 React 中创建了一个视频组件,用于创建和呈现 VideoJS。一些逻辑添加到 componentDidMount 逻辑。

在另一个组件中,我需要用视频组件替换特定的 HTML 字符串代码。 例如我有:

<table>
  <td>
  column 1
  </td>
  <td>
  videoComesHere
  </td>
</table>
我想在挂载并调用 componentDidMount 后用视频组件替换 videoComesHere。

我试过renderToString,但是这个方法是在componentDidMount之前执行的。 我需要一个在获取组件字符串之前呈现组件并调用 componentDidMount 方法的解决方案。

首先,

  • HTML 和 JSX 之间的互操作性 在 React 中不是理想的模式。
  • 在这种情况下,Vanilla JS 在操作 DOM 元素时会很方便。

这是一个方法。

  • 捕获 HTML 标记中的可替换值:videoComesHere
  • 将它们替换为具有 identifiers/classes 的元素,例如 <div>
<td>videoComesHere</td> TO <td><div id="videoWrapper">videoComesHere</div></td>
  • 使用这些 ids/classes 作为占位符来呈现您的 React 组件.
ReactDOM.render(<VideoComponent/>, document.getElementById("videoWrapper"));

Fiddle: https://jsfiddle.net/kypt0o8w/

输出:

免责声明:此问题涉及dangerouslySetInnerHTML (不推荐因此得名)。