项目改了个仓库地址,重新拉取依赖之后发现引入antd组件一直爆红:
网上查原因,发现是在tsconfig.json文件中设置了
"jsx": "react-jsx",将这里改成"jsx": "react",就可以了,"jsx": "react"是旧的默认转换,将JSX编译为对React.createElement的调用,这意味着<Button/>被编译为React.createComponent('Button'),而React被期望存在于模块的作用域中。如果没有import,React的引用会试图引用一个全局变量,这会导致错误。因此React必须在范围内才能工作,每个组件里面都需要引入React:import React from 'react';,如果没有引入则会导致新的错误:
react-jsx转换使用_jsx函数,并自动为其插入导入。在此更改之后,可以安全地删除未使用的React导入。但也会导致前面的错误,目前我的解决方法是仍使用旧的默认转换,每个组件都引入React。还有更好的解决方法吗?