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