【问题标题】:Render VideoJs component as HTML in React在 React 中将 VideoJs 组件渲染为 HTML
【发布时间】:2020-08-23 07:00:06
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: reactjs video.js


    【解决方案1】:

    首先,

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

    这是一种方法。

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

    小提琴: https://jsfiddle.net/kypt0o8w/

    输出:

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

    【讨论】:

    • 我希望它在调用 renderToString 后调用 componentDidMount。所以换句话说,我有 renderToString(Video />) 这是渲染视频但不调用 componentDidMount 操作
    • 嗯,我有一个字符串,我需要用视频组件替换一个特定的字符串。然后调用字符串的 dangerouslySetInnerHTML
    • 知道了。因此,这处理设置为 HTML 而不是 JSX 的文本,并且组件需要适合 HTML 结构。这就是危险功能发挥作用的时候。
    猜你喜欢
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2023-04-03
    • 2017-10-30
    • 2017-09-20
    • 1970-01-01
    相关资源
    最近更新 更多