reactjs - CommonJS 导入与 ES6 导入

标签 reactjs import ecmascript-6 commonjs

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

相关文章:

reactjs - 在 GCP App Engine 上使用代码拆分部署应用程序 - 加载 block * 失败

javascript - React 自定义 Hook 不触发 DOM 更新

javascript - React App 是否允许在 App.js 文件中获取数据?

go - 如何从另一个包正确导入方法

javascript - 为什么 ReactJS 不在一个组件内渲染另一个组件?

r - 如何使用 R "readLines"命令从大文件中读取选定的行并将它们写入数据框?

java - 如何在 Eclipse 中正确导入这个库?

javascript - 使用js箭头函数作为参数

javascript - 如何让匿名函数库与 webpack 一起运行

javascript - 使用 Brunch 构建 npm 依赖源