相关疑难解决方法(0)

我什么时候应该使用花括号进行ES6导入?

这似乎是显而易见的,但我发现自己对于何时使用花括号在ES6中导入单个模块感到困惑.例如,在我正在处理的React-Native项目中,我有以下文件及其内容:

initialState.js
var 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导入单个模块(这显然不是例如,我已经看过需要花括号的单个导入)

javascript import ecmascript-6

669
推荐指数
11
解决办法
16万
查看次数

Javascript(ES6),导出const vs export默认值

我试图确定这两个之间是否存在任何重大差异,除了能够通过以下方式导入export default:

import myItem from 'myItem';
Run Code Online (Sandbox Code Playgroud)

使用export const我可以做:

import { myItem } from 'myItem';
Run Code Online (Sandbox Code Playgroud)

我想知道除此之外是否存在任何差异和/或用例.

javascript ecmascript-6 es6-modules

175
推荐指数
6
解决办法
8万
查看次数

ES6模块语法:是否可以`从...导出*作为名称?

查看问题标题.我找到了一个很好的参考形式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供外部使用.我试图简化为了问题.)

javascript ecmascript-6

11
推荐指数
2
解决办法
4857
查看次数

类型错误 - 不是构造函数

想在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不是构造函数

javascript transpiler ecmascript-6 webpack

6
推荐指数
2
解决办法
6681
查看次数

ES6导出一个函数的结果

我正在尝试导出 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)

你能解释一下为什么吗?似乎不包括上述情况。

javascript export ecmascript-6

3
推荐指数
1
解决办法
3323
查看次数