这是使用非默认导出的两个示例。第一个使用commonjs语法,第二个使用es6。为什么第一个示例有效,而第二个示例却无效?

// commonjs --- works!
var ReactRouter = require('react-router')
var Link = ReactRouter.Link


// es6 --- doesn't work!
import ReactRouter from 'react-router'
var Link = ReactRouter.Link

我知道我可以改用import { Link } from 'react-router',但我只是想将每个导入的不同之处总结一下。

最佳答案

import ReactRouter仅导入默认导出。它不会导入命名导出的对象,而这正是您试图在ES6代码中实现的。如果模块中没有默认导出,则此ReactRouter将为undefined

如前所述,import { Link } from 'react-router'是用于导入单个命名导出的专用语法。

如果要将所有命名的导出导入到对象中,则可以使用import..as语法:

import * as ReactRouter from 'react-router';
var Link = ReactRouter.Link

MDN super 有用地列出了所有不同类型的导入及其工作方式。

关于reactjs - CommonJS进口与ES6进口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37050932/

10-11 13:57