这似乎是显而易见的,但我发现自己对于何时使用花括号在ES6中导入单个模块感到困惑.例如,在我正在处理的React-Native项目中,我有以下文件及其内容:
initialState.jsvar initialState = {
todo: {
todos: [
{id: 1, task: 'Finish Coding', completed: false},
{id: 2, task: 'Do Laundry', completed: false},
{id: 2, task: 'Shopping Groceries', completed: false},
]
}
};
export default initialState;
Run Code Online (Sandbox Code Playgroud)
在TodoReducer.js中,我必须在没有花括号的情况下导入它:
import initialState from './todoInitialState';
Run Code Online (Sandbox Code Playgroud)
如果我initialState用大括号括起来,我会得到以下代码行的错误:
TodoReducer.js:无法读取未定义的属性待办事项
export default function todos(state = initialState.todo, action) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
使用花括号的组件也会发生类似的错误.我想知道何时应该使用大括号进行单次导入,因为很明显,当导入多个组件/模块时,你必须将它们用大括号括起来,我知道.
编辑:
所谓张贴在这里并没有回答我的问题,而不是我问的时候我应不应该用花括号用于导入单个模块,或者我不应该用花括号中ES6导入单个模块(这显然不是例如,我已经看过需要花括号的单个导入)
我试图确定这两个之间是否存在任何重大差异,除了能够通过以下方式导入export default:
import myItem from 'myItem';
Run Code Online (Sandbox Code Playgroud)
使用export const我可以做:
import { myItem } from 'myItem';
Run Code Online (Sandbox Code Playgroud)
我想知道除此之外是否存在任何差异和/或用例.
查看问题标题.我找到了一个很好的参考形式export,但我还没有看到我在寻找什么.
有可能做以下事情吗?
// file: constants.js
export const SomeConstant1 = 'yay';
export const SomeConstant2 = 'yayayaya';
// file: index.js
export * as Constants from './constants.js';
Run Code Online (Sandbox Code Playgroud)
即这将提供一个名为export Constants的内部index.js包含所有从指定出口module.js.
这个答案似乎表明它在TypeScript中是不可能的; 纯JavaScript是一样的吗?
(这个例子有点做作;实际上我正在尝试使用一个prop-types.js模块在React包中使用命名导出供内部使用,但也会导出prop类型定义以PropTypes供外部使用.我试图简化为了问题.)
想在ES6 javascript中实例化一个模块并转换为ES5.我在我的项目中设置了一个新类,即es6/webpack.我有2个文件:track.js,其中包含以下内容 -
export default class Track {
constructor() {
this.o = {};
}
}
Run Code Online (Sandbox Code Playgroud)
另一个是index.js -
import { Track } from './track';
const track = new Track();
console.log(track);
Run Code Online (Sandbox Code Playgroud)
我试图让控制台日志显示一个空对象.相反,我得到 - Uncaught TypeError:_track.Track不是构造函数
我正在尝试导出 ES6 中函数的结果。该功能并不重要 - 以下示例适用于:const func = input => input
这有效:
const a = 'foo'
const b = 'bar'
export default {
a: func(a),
b: func(b)
}
Run Code Online (Sandbox Code Playgroud)
而这些遇到了错误SyntaxError: Unexpected token, expected ,::
export {
a: func(a),
b: func(b)
}
Run Code Online (Sandbox Code Playgroud)
还:
export {
func(a) as a,
func(b) as b
}
Run Code Online (Sandbox Code Playgroud)
你能解释一下为什么吗?这似乎不包括上述情况。