Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在react中显示纯html_Javascript_Html_Reactjs - Fatal编程技术网

Javascript 在react中显示纯html

Javascript 在react中显示纯html,javascript,html,reactjs,Javascript,Html,Reactjs,我在玩react草稿所见即所得编辑器。我进步很好。但现在我陷入了如何显示编辑器输出的困境 例如,假设body是所见即所得编辑器的输出: function ShowHtml(props) { let body = '<p>Sample text with <strong>bold</strong> and <em>italic</em></p>' return ( <div> {body}

我在玩react草稿所见即所得编辑器。我进步很好。但现在我陷入了如何显示编辑器输出的困境

例如,假设body是所见即所得编辑器的输出:

function ShowHtml(props) {
  let body = '<p>Sample text with <strong>bold</strong> and <em>italic</em></p>'
  return (
    <div>
     {body}
    </div>
  )
}
函数ShowHtml(道具){
让正文=“带有粗体和斜体的示例文本”
返回(
{body}
)
}
现在,输出将是完全相同的html,显示的标记没有格式

<p>Sample text with <strong>bold</strong> and <em>italic</em></p>
带有粗体和斜体的示例文本

我想要这样的东西:

带有粗体和斜体的示例文本


在jQuery中,我只需设置div标记的html属性。但我不知道如何正确地反应。我可以像在jQuery中一样获取对div的引用并以某种方式更新它吗?它与虚拟Dom一起工作吗?

尝试删除双引号,或者如果您想保留双引号,可以使用
危险的LysetinerHTML

function ShowHtml(props) {
  let body = '<p>Sample text with <strong>bold</strong> and <em>italic</em></p>'
  return (
    <div dangerouslySetInnerHTML={{__html: body}}/>


  )
}
函数ShowHtml(道具){
让正文=“带有粗体和斜体的示例文本”
返回(
)
}
函数ShowHtml(){
返回(
带有粗体和斜体的示例文本

) }
尝试作为属性危险地插入SetinenerHTML={{{{uuuHTML:body}

  function ShowHtml(props) {
    let body = '<p>Sample text with <strong>bold</strong></p>'
    return (
     <div  dangerouslySetInnerHTML={{__html: body}} />
    )
  }
函数ShowHtml(道具){
让正文=“带有粗体的示例文本”
返回(
)
}

您可以使用
危险的html
在react组件中呈现html:

renderBodyContents = () => {
  return {__html: this.state.body}
}

...

render(){
  return(
    <p> dangerouslySetInnerHTML={this.renderBodyContents()}></p>
  )
}
renderBodyContents=()=>{
返回{uuuhtml:this.state.body}
}
...
render(){
返回(
DangerouslySetinerHTML={this.renderBodyContents()}>

) }
如果要保留双引号,还可以危险地设置innerHTML:

   function ShowHtml(props) {
      let body = '<p>Sample text with <strong>bold</strong> and <em>italic</em></p>'
      return (
       <div dangerouslySetInnerHTML={{__html: body}}>

       </div>
      )
    }
函数ShowHtml(道具){
让正文=“带有粗体和斜体的示例文本”
返回(
)
}

实际上,body是编辑器的输出。您知道如何将实际字符串转换为JSX吗?谢谢,这很接近,但我认为您的答案是第一个正确答案。这可以在生产中使用吗?虽然这段代码可以回答这个问题,但提供有关如何和/或为什么解决问题的其他上下文将提高答案的长期价值。
   function ShowHtml(props) {
      let body = '<p>Sample text with <strong>bold</strong> and <em>italic</em></p>'
      return (
       <div dangerouslySetInnerHTML={{__html: body}}>

       </div>
      )
    }