You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

axios请求后端HTML资源返回对象报错,如何在React中正确嵌入渲染

问题根因

  • 你定义的requestExamplePage是异步函数,调用后返回的是Promise实例,直接将该返回值作为React子元素渲染,就会触发你看到的[object Promise]相关报错,和axios返回结果无关。
  • responseType: 'document'配置的作用是让axios将HTML响应解析为DOM Document对象,该对象无法直接作为React子元素渲染,不是配置不生效,是不符合你的使用需求。

解决方案

第一步:调整axios请求配置

将responseType改为text,直接获取原始HTML字符串:

import axios from 'axios';

const examplePage = "example.com/example"

export const requestExamplePage = async () => {
    const {data} = await axios.get(examplePage, {responseType: 'text'})
    return data
}

第二步:在React组件中正确处理异步请求和HTML渲染

在副作用钩子中发起异步请求,将拿到的HTML字符串存入状态,通过dangerouslySetInnerHTML属性渲染:

import { useEffect, useState } from 'react';
import { requestExamplePage } from './对应文件路径';

function RenderExternalHtml() {
  const [htmlStr, setHtmlStr] = useState('');

  // 异步请求要在副作用钩子中触发
  useEffect(() => {
    const getPage = async () => {
      const res = await requestExamplePage();
      setHtmlStr(res);
    };
    getPage();
  }, []);

  // 通过dangerouslySetInnerHTML渲染HTML字符串
  return <div dangerouslySetInnerHTML={{ __html: htmlStr }} />;
}

export default RenderExternalHtml;

注意事项

  • dangerouslySetInnerHTML存在XSS注入风险,请确保请求的HTML来源完全可信,避免执行恶意脚本。
  • 如果需要对HTML内容做过滤处理,可以引入xss等开源过滤库处理后再存入状态渲染。

内容的提问来源于stack exchange,提问作者Kerwin Charles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:36:04