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

React.js组件无法在HTML网页中渲染的问题排查求助

React元素无法显示的问题修复

问题描述

尝试将React集成到网站中,添加简单测试元素但无法显示,控制台无报错。测试环境包括本地服务器、Chrome直接打开文件、VS Code的Edge预览器,均无效。

用户代码:

<!DOCTYPE html>
<html lang="en">
    <head>
        <link rel="stylesheet" href="styles.css">

        <script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
        <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>

    </head>
    <body>
        <h1>My Website</h1>

        <div id="react-container"></div>

        <script type="text/babel">
            import React from 'react';
            import ReactDOM from 'react-dom';

            const element = <h1>Hello World</h1>


            ReactDOM.render(element, document.getElementById("react-container"));
        </script>
    </body>
</html>

问题原因及修复方案

1. 缺少Babel转译器

使用type="text/babel"的script标签需要Babel转译JSX语法,当前代码未引入Babel的CDN,导致JSX代码无法被解析执行。

修复:在React相关脚本之后添加Babel的CDN:

<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

2. 错误使用import语句

通过CDN引入的React是UMD版本,React和ReactDOM会作为全局变量挂载到window对象上,不需要使用import语句导入,否则会导致未捕获错误(因Babel未加载未显示报错)。

修复:删除import React from 'react';和import ReactDOM from 'react-dom';两行代码。

3. React 18的API更新

React 18推荐使用createRootAPI替代旧的ReactDOM.render,旧API虽兼容,但新API更规范。

修复:替换渲染逻辑为:

const root = ReactDOM.createRoot(document.getElementById("react-container"));
root.render(element);

完整修正后的代码

<!DOCTYPE html>
<html lang="en">
    <head>
        <link rel="stylesheet" href="styles.css">

        <script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
        <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>
        <!-- 添加Babel转译器 -->
        <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
    </head>
    <body>
        <h1>My Website</h1>

        <div id="react-container"></div>

        <script type="text/babel">
            const element = <h1>Hello World</h1>;

            // 使用React 18的createRoot API
            const root = ReactDOM.createRoot(document.getElementById("react-container"));
            root.render(element);
        </script>
    </body>
</html>

内容的提问来源于stack exchange,提问作者Samuel Crawford

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:07:36