繁体   English   中英

React + TypeScript:“ React”是指UMD全局变量,但当前文件是模块。 考虑添加导入。 (理由)

[英]React + TypeScript: 'React' refers to a UMD global but the current file is a module. Consider adding an import instead. (Justification)

我们在当前项目中使用React和TypeScript,遇到以下行为。

import React, { Component } from 'react';

我将上面的一行替换为下面的一行,因为它似乎仅使用Component导入。

import { Component } from 'react';

而且我被抛出错误以下

错误:“响应”是指UMD全局,但当前文件是模块。 考虑添加导入。

我尝试在Stack和GitHub上查找它,发现很少的文章和讨论,但仍不清楚它为什么会发生。

会对React或Typescript是否抛出它感兴趣,为什么会更感兴趣? 不是解决它的方法。

UMD周围还有一些亮点,为什么在这里使用它?

您是否在文件中呈现任何jsx? 如果是这样,您确实需要导入React,因为这些jsx标签会编译为对React.createElement()调用。 如果没有导入,对React的引用将尝试引用一个全局变量,这将导致该错误。

如果您使用的是eslint,我建议您使用eslint-plugin-react并打开规则react-in-jsx-scope ,它将捕获这种情况。

编译 JSX语法的方式取决于编译器选项 ,而jsxFactory选项默认为React.createComponent 这意味着<p/>被编译为React.createComponent('p') ,并且React应该存在于模块范围内。

如果没有React导入,那么应该存在React global。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM