Reactjs 在react DangerouslySetinerHTML中将json显示为html

Reactjs 在react DangerouslySetinerHTML中将json显示为html,reactjs,Reactjs,我试图在react中的弹出窗口中显示来自axios调用的html响应。 这就是我正在做的。我首先在我的组件中进行调用: useEffect(() => { const previewTemplate = getPreviewTemplate(props.customFields); previewTemplate.then(htmlResponse => { setHtmlTemplate(htmlResponse.data); }); }

我试图在react中的弹出窗口中显示来自axios调用的html响应。 这就是我正在做的。我首先在我的组件中进行调用:

  useEffect(() => {
    const previewTemplate = getPreviewTemplate(props.customFields);
    previewTemplate.then(htmlResponse => {
      setHtmlTemplate(htmlResponse.data);
    });
  }, [props.customFields])
方法是

const getPreviewTemplate = async (template) => {
  let result;
  try {
    const headers = {
      'Accept': 'application/json',
      'Content-Type': 'application/json',
    };

    result = await axios.post('http://localhost:5000/template-preview',
    {html: template.previewHtml}, headers
    )
  } catch (error) {
      if (error.response) {
        return error.response
      } else if(error.request) {
        return error.request
      }
    }
  return result;
}
这将运行并返回一个html布局。然后,我尝试在单击按钮时将其弹出。 (为简洁起见,已删除所有onChange等)


HTML代码出现在弹出窗口中,并显示以下错误:

   Error: ENAMETOOLONG: name too long, open '/Volumes/OGX/Code/itsyoo-build/server/views/layouts/
<style media="screen,print">
    #g-handyman---patch-shape-box ,
    #g-handyman---patch-shape-box .g-artboard {
        margin:0 auto;
    }
    #g-handyman---patch-shape-box p {
        margin:0;
    }
.. etc
错误:enametolong:name太长,打开“/Volumes/OGX/code/itsyoo build/server/views/layouts/
#g-handyman——补丁形状的盒子,
#g-handyman——补丁形盒子。g-artboard{
保证金:0自动;
}
#g-杂工——补丁形盒p{
保证金:0;
}
.. 等

我做错了什么?我期望代码以html格式显示,而不是以可见字符串的形式显示。

虽然我希望您的代码正常工作,但这肯定不是“反应”方式。React团队肯定会推动您,因此当弹出窗口打开时,该组件的JavaScript包将被获取并呈现,所有这些都在Reactland中


但我肯定你问了这个问题,因为动态导入超出了项目可能的范围。在我看来,如果您看到的是
enametolong
,那么您遇到了服务器错误。请检查请求是否实际返回了
200
,并且您的服务器没有任何问题。

虽然我希望您的代码正常工作,但这肯定不是“反应”方式。React团队肯定会推动您,因此当弹出窗口打开时,该组件的JavaScript包将被获取并呈现,所有这些都在Reactland中


但我肯定你问了这个问题,因为动态导入超出了项目可能的范围。在我看来,如果您看到的是
enametolong
,那么您遇到了服务器错误。请检查请求是否实际返回了
200
,并且您的服务器没有任何问题。

我认为这是后端API问题。它会将错误回复给您。React只是忠实地打印结果。我认为这是后端API的问题。它会将错误回复给您。React只是忠实地打印结果。将对此进行检查。我没有完全响应的原因是因为我读过,最好在后端尽可能多地执行操作,而不是尝试在客户端全部运行。谢谢大家!@Dave Lunny虽然我同意通常最好选择堆栈的一端来进行重载,但我不确定你在哪里画的线是正确的。考虑通过“代码> ReTracDistServer < /代码>查看服务器端的渲染:是的,先生会检查出来的,谢谢!”戴夫·伦尼会检查的。我没有完全响应的原因是因为我读过,最好在后端尽可能多地执行操作,而不是尝试在客户端全部运行。谢谢大家!@Dave Lunny虽然我同意通常最好选择堆栈的一端来进行重载,但我不确定你在哪里画的线是正确的。考虑通过“代码> ReTracDistServer < /代码>查看服务器端的渲染:是的,先生会检查出来的,谢谢!”戴夫·伦尼
   Error: ENAMETOOLONG: name too long, open '/Volumes/OGX/Code/itsyoo-build/server/views/layouts/
<style media="screen,print">
    #g-handyman---patch-shape-box ,
    #g-handyman---patch-shape-box .g-artboard {
        margin:0 auto;
    }
    #g-handyman---patch-shape-box p {
        margin:0;
    }
.. etc