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

如何在现有HTML中正确集成React 18?

React 18 集成到现有 HTML 的正确实现方案

问题分析

你的代码存在三个核心问题:

  • 错误使用 ES 模块导入:通过 CDN 全局引入 React 时,无需使用 import 语句,应直接调用全局变量 ReactDOM.createRoot。
  • 未配置 Babel 编译 JSX:引入的 JS 文件未声明 type="text/babel",导致浏览器无法识别 JSX 语法。
  • 不必要的 DOM 覆盖:document.body.innerHTML = '<div id="app"></div>' 会清空原有页面内容,而你的 HTML 中已经存在 #app 容器,完全不需要这一步。

修正后的代码

HTML 文件

<head>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
    <p>Hi</p>
    <div id="app"></div>
    <!-- 添加 type="text/babel" 让 Babel 编译 JSX 语法 -->
    <script src="./todo.js" type="text/babel"></script>
</body>
</html>

JS 文件(todo.js)

const myArr = [
    {
        Heading: "lorembdbfyhfhjvjvj",
        Body: "hdhdgbfb"
    },
    {
        Heading: "lorembdbfyhfhjvjvj",
        Body: "hdhdgbfb"
    },
    {
        Heading: "lorembdbfyhfhjvjvj",
        Body: "hdhdgbfb"
    }
]

const Reuse = (props) => {
    return (
        <div>
            <h3>{props.Heading}</h3>
            <p>{props.Body}</p>
        </div>
    )
}

const MyDisplay = () => {
    const sense = myArr.map((v, index) => {
        // 循环渲染组件必须添加唯一 key 属性,避免 React 控制台警告
        return <Reuse key={index} Heading={v.Heading} Body={v.Body} />
    })
    return (
        <div>
            {sense}
        </div>
    )
}

// 直接使用全局的 ReactDOM.createRoot 方法
const root = ReactDOM.createRoot(document.getElementById('app'));
root.render(<MyDisplay />);

额外优化说明

  • 给循环渲染的组件添加 key 属性,这是 React 列表渲染的强制要求,能避免控制台警告并提升渲染性能。
  • 给标题和内容添加 <h3>、<p> 等语义化标签,让页面结构更清晰。

内容的提问来源于stack exchange,提问作者Zero Hour

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:27:57