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

React 16是否必须导入React?未导入仍能运行的原因咨询

为什么React 16项目不导入React也能运行?

没错,你在HTML里引入的那个UMD格式的React脚本就是问题的答案。

当你通过<script>标签加载react.development.js这类UMD版本的React时,它会自动把React对象挂载到浏览器的全局window对象上。在React 16及更早版本中,JSX代码会被编译成React.createElement()调用——正常情况下,你需要在文件里导入React才能让这个调用生效,但因为全局window上已经存在React对象,编译后的代码能直接找到它,自然就不用手动导入了。

举个对比:

  • 如果你用webpack、Vite这类构建工具的项目(一般用ES模块规范),React 16必须在每个使用JSX的文件顶部写import React from 'react',因为这类环境里没有全局的React对象。
  • 但通过UMD脚本引入时,全局变量已经就绪,就跳过了手动导入的步骤。

而React 17之后的版本,JSX的编译逻辑做了改动,会生成_jsx()这类不依赖全局React的调用,所以不管用哪种引入方式,都不需要手动导入React了。

内容的提问来源于stack exchange,提问作者Sam Porter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:00:54