typescript 使用< video>html-react-parser解析HTML5元素

kognpnkq  于 2023-10-22  发布在  TypeScript
关注(0)|答案(1)|浏览(137)

我有一些HTML内容是从CMS返回的,我希望在NextJS应用程序中显示。我使用html-react-parser包而不是dangerouslySetHtml来解析HTML内容,因为我还希望分别用相应的React组件“Link”和Cloudinary的“CldImage”和“CldVideoPlayer”组件替换一些嵌入式标签,如“a”,“img”和“video”。
“a”和“img”元素的替换工作正常,但是我不知道如何从domNode中提取“video”的“src”属性并将其沿着传递给组件。
例如,我的代码类似于以下内容:

  1. import parse, { Element, HTMLReactParserOptions } from "html-react-parser"
  2. import { CldVideoPlayer } from "next-cloudinary"
  3. import "next-cloudinary/dist/cld-video-player.css"
  4. export default function ArticleContent({ content }: { content: string }) {
  5. const parserOptions: HTMLReactParserOptions = {
  6. replace: (domNode) => {
  7. // Replace embedded <video> tags with <CldVideoPlayer>
  8. if (domNode instanceof Element && domNode.name === "video") {
  9. return <CldVideoPlayer src={domNode.[ what goes here???? ]} width={1920} height={1080} />
  10. }
  11. }
  12. }
  13. return (
  14. <div>
  15. {parse(content, parserOptions)}
  16. </div>
  17. )

在domNode中查找到video src属性的路径一直是一个挑战。有人有什么建议吗?

sdnqo3pr

sdnqo3pr1#

我想通了。我的替换条件应该如下所示:

  1. if (domNode instanceof Element && domNode.attribs && domNode.name === "source") {
  2. return <CldVideoPlayer width={1920} height={1080} src={domNode.attribs.src} />
  3. }

相关问题