我有一个不幸的情况,我有时会从 cms 获取 html 标签,其中包括带有 !important 的内联样式。 我必须解析它们并在 React 应用程序中呈现它们。
我对此无能为力,所有带有 !important 的样式都被 React 剥离。
有什么方法可以使用 html-react-parser 来保留这些样式,以便它们保留在正文中吗?
抱歉,如果这不是问这个问题的正确地方,请随时关闭此问题。
谢谢!
@remarkablemark啊,我什至没有想到危险的
就我而言,XSS 没有真正的风险,所以应该没问题。
问题是,我仍然需要通过 html-react-parser 运行所有内容,因为主体可以包含我需要用某些 React 组件替换的元素。 只有当元素具有样式属性时,我才能按原样呈现它。
有什么方法可以在解析时将 domNode 转换回字符串?
非常感谢你!
@linkurzweg您可以在domToReact()
传递您的 domNode,它会将其呈现为 React 元素。 请参阅替换示例。
@remarkablemark再次感谢! 我知道这一点,但我不明白这对我的情况有何帮助?
我仍然需要将 domNode 恢复为一个字符串,我可以将其与危险的 SetInnerHTML 一起使用,或者我没有得到什么?
@linkurzweg我不遵循您的用例。 你能提供一个使用CodeSandbox 、 JSFiddle或Repl.it 的例子吗?
@linkurzweg感谢您创建小提琴。 所以样式没有正确呈现的原因是因为内联样式不需要!important
。
删除!important
,我做了红色边框显示。 请参阅更新的小提琴。
@remarkablemark当然,傻我! 在 html 字符串中可能有一些其他带有 !important 的样式标签(这一切都非常混乱),它们可能与内联样式发生冲突。 但是我也可以删除 !important 那里的,所以应该没问题。 :D 非常感谢您的帮助!