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

使用react-router-dom v6出现Objects are not valid as a React child错误

解决react-router-dom v6.14.0中出现"Objects are not valid as a React child (found: [object Promise])"错误

这个错误的核心是React试图渲染一个Promise对象,而非合法的React元素。你的路由配置代码本身没有明显问题,但问题大概率出在路由对应的组件内部,结合版本从v6.11.2升级到v6.14.0后触发报错,可按以下步骤排查解决:

  • 检查所有路由组件(Home、AddAPost、Login、Register、Post)是否为async函数组件:React不允许组件定义为async函数,因为async函数返回的是Promise,不是React元素。如果组件里有异步操作,去掉async关键字,改用useEffect处理异步逻辑,把结果存入state后再渲染。
    错误示例:
    async function Home() {
      const data = await fetch('/api/data');
      return <div>{data}</div>;
    }
    
    修正写法:
    function Home() {
      const [data, setData] = useState(null);
      useEffect(() => {
        async function fetchData() {
          const res = await fetch('/api/data');
          const result = await res.json();
          setData(result);
        }
        fetchData();
      }, []);
      
      if (!data) return <div>加载中...</div>;
      return <div>{data}</div>;
    }
    
  • 检查组件内部是否直接渲染Promise对象:比如在JSX里直接写{fetch('/api/data')},这种写法会把Promise当作React子元素,必须先通过useEffect获取结果并存入state后再渲染。
  • 修正路由路径格式:你的/posts:postid路径参数写法有误,应改为/posts/:postid(冒号前添加斜杠),虽然这不是当前报错的直接原因,但会导致路径匹配失败,建议一并修正。
  • 清理缓存重新构建:版本升级后缓存可能引发异常,尝试删除node_modules和package-lock.json,重新执行npm install后启动项目。

内容的提问来源于stack exchange,提问作者Agrim Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:42:55