我有一些HTML内容是从CMS返回的,我希望在NextJS应用程序中显示。我使用html-react-parser
包而不是dangerouslySetHtml
来解析HTML内容,因为我还希望分别用相应的React组件“Link”和Cloudinary的“CldImage”和“CldVideoPlayer”组件替换一些嵌入式标签,如“a”,“img”和“video”。
“a”和“img”元素的替换工作正常,但是我不知道如何从domNode中提取“video”的“src”属性并将其沿着传递给组件。
例如,我的代码类似于以下内容:
import parse, { Element, HTMLReactParserOptions } from "html-react-parser"
import { CldVideoPlayer } from "next-cloudinary"
import "next-cloudinary/dist/cld-video-player.css"
export default function ArticleContent({ content }: { content: string }) {
const parserOptions: HTMLReactParserOptions = {
replace: (domNode) => {
// Replace embedded <video> tags with <CldVideoPlayer>
if (domNode instanceof Element && domNode.name === "video") {
return <CldVideoPlayer src={domNode.[ what goes here???? ]} width={1920} height={1080} />
}
}
}
return (
<div>
{parse(content, parserOptions)}
</div>
)
在domNode中查找到video src属性的路径一直是一个挑战。有人有什么建议吗?
1条答案
按热度按时间sdnqo3pr1#
我想通了。我的替换条件应该如下所示: