如果“反应”是“反应”的默认导出,为什么我们不能使用其他名称代替“反应”


9

因此,我在寻找这个问题的答案时发现,在导入时,{React'不需要在{}中,因为它是默认导出而不是命名导出,是的,但是我也看到了在导入默认导出时,我们可以在导入时使用任何名称。但是在这种情况下,我们只能使用以下导入,

import React from 'react';

并不是

import Somename from 'react';

Answers:


10

可以通过这种方式导入React,但是如果您使用的是JSX,则还需要更新配置以告知编译器您正在使用的“ builder”功能不再React.createElement是,而是Somename.createElement。(如果您使用的是Babel,请使用pragma指令执行此操作。)这是因为,正如React文档中所说的那样:

const element = (
  <h1 className="greeting">
    Hello, world!
  </h1>
);

转换为:

const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Hello, world!'
);

...因此React(或您在配置中更改的名称)必须在scope中。除此之外,还可以。


1
稍微补充一下,实际了解转译器对JSX所做的工作会很有帮助。这是一个例子
尼克,

1
谢谢@TJ Crowder和@Nick,这些都是很好的解释。
Tick20 '19
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.