因为 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