【发布时间】:2018-08-30 17:30:01
【问题描述】:
我从 AJAX 请求中得到一个 HTML 字符串,看起来像这样:
<div> <SpecialComponent/> <SecondSpecialComponent/></div>
我需要的是能够在 React 组件中使用这个字符串,因为它是有效的 JSX。
我尝试按照此讨论中的说明使用dangerouslySetInnerHTML:
how-to-parse-html-to-react-component
我也尝试过像 react-html-parse 和 html-react-parser 这样的 React 库。没有成功
当我使用 AngularJS(1) 时,我使用了一些小指令来处理这种情况。我需要用 React 达到同样的效果。 有什么想法吗?
编辑:如果有人感兴趣,我找到了一个处理这个问题的库: https://www.npmjs.com/package/react-jsx-parser
【问题讨论】:
-
你能把html字符串或小模板贴在这里吗,因为如果是html,使用dangerouslySetInnerHTML应该可以正常工作
-
使用
dangerouslySetInnerHTML有什么问题? -
您尝试执行的操作需要对内容进行转译,因为它包含
jsx。这将非常困难。相反,如果您控制端点,则最好只返回可由组件呈现的 json 可序列化数据。 -
到 Stretch0:不管我怎么尝试,它都不起作用。同样在这个例子中它不起作用:codesandbox.io/s/WnKvoY6BE。 to trixin:这会破坏我试图构建的整个想法......所以,我需要让它发挥作用:-)
-
@TomaszBubała 不,它不能正常工作。如果您检查 DOM,您将看到它没有呈现组件,而是呈现无效的 html 节点
<specialcomponent>。根据浏览器的不同,它可能会呈现它。但它根本不是一个反应组件。这只是因为jsx看起来像有效的 html 标记,但实际上并非如此。
标签: javascript reactjs