因为 react 在编译 jsx 后的需要使用 React.createElement

const App = () => (
  <div>Hello World!!!</div>
);
 
// 编译后
var App = function App() {
  return React.createElement(
    "div",
    null,
    "Hello World!!!"
  );
};

jsx本质上是语法糖,需要编译才能执行

其他

  • react 16.3 之前是默认导出,所以 import react from ‘react’可行。

  • react 16.3之后,是具名导出,所以要用 import * as react from ‘react’。

  • 从 react 17 开始,官方支持在写 jsx 的时候不引入上述的声明, 新的 jsx 转化插件 @babel/plugin-transform-react-jsx 会在打包的时候自动添加, 可以通过** vite 创建一个 react 项目试试,已经不会在报错了**。

作者:supree 链接:https://juejin.cn/post/7069598156735905800