Closed yinran100 closed 1 year ago
目前临时解决方案就是 : 构建时把 tsconfig.json
里的"jsx": "react-jsx"
注释掉
目前临时解决方案就是 : 构建时把
tsconfig.json
里的"jsx": "react-jsx"
注释掉
@yinran100 根据您提供的信息,看起来是跟 plugin-transform-react-jsx 插件没有关系,而且 jsx 语法被 ts 编译掉了。但是 babel-plugin-react-directives 插件转换 x-* 属性是基于 jsx 语法来转换的,所以一定要保留 jsx 语法。
通常来说,我们会在 tsconfig.json
里配置 "jsx": "preserve"
,表示 ts 仅识别语法,不做转换,交给 babel 去转换 jsx 语法。
刚刚看了一下,并不会依赖 @babel/plugin-transform-react-jsx
,而是依赖 @babel/plugin-syntax-jsx
,也是表示在babel中仅识别 jsx 语法,而不做转换。转换交由项目中配置的其他 babel 配置处理,比如使用 @babel/preset-react
预设
刚刚看了一下,并不会依赖
@babel/plugin-transform-react-jsx
,而是依赖@babel/plugin-syntax-jsx
,也是表示在babel中仅识别 jsx 语法,而不做转换。转换交由项目中配置的其他 babel 配置处理,比如使用@babel/preset-react
预设
靠谱,感谢
最近开发组件库打包时发现,开发时jsx转换是用babel插件转换的,功能开发没有问题。 但是由于现在react17开始,react的jsx语法打包时是通过react/jsx-runtime来转换新的JSX转换方式——React 官方博客翻译,导致打包后的代码,并没有转换
x-
指令,通过翻阅资料和查看源码,本插件过渡依赖@babel/plugin-transform-react-jsx
,可以多增加一个包来处理这样的场景。可参考:通过 jsx-runtime 实现自动使用 classnames / clsx