这是使用非默认导出的两个示例。第一个使用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/