需要工作但导入不起作用

时间:2016-11-23 10:49:44

标签: es6-module-loader es6-class es6-modules

我有一个actions.js文件正在导出这样的动作

export var toggleTodo = (id) => {
  return {
    type: 'TOGGLE_TODO',
    id
  }
}

但是当我使用es6 import导入它时会出现错误

Uncaught TypeError: Cannot read property 'toggleTodo' of undefined

但是当我需要使用常见的js时,它的工作正常!有人可以向我解释为什么会发生这种情况,我的意思是我读到这两个是相同的事情......似乎有些不同?

// var actions = require('actions') working 
// dispatch(actions.toggleTodo(id));

import actions from 'actions' //not working
dispatch(actions.toggleTodo(id));

1 个答案:

答案 0 :(得分:6)

有几种不同形式的import,每种形式都略有不同。你正在使用的那个

import actions from 'actions' //not working

用于从actions模块导入default export。您可以看到complete list in MDN javascript reference

它不起作用,因为您的action.js模块可能没有默认导出,actions未定义。

require电话大致对应的表格就是这个:

import * as actions from 'actions';

它允许您将所有导出的值作为actions

的属性进行访问
dispatch(actions.toggleTodo(id));

或者您可以像这样使用命名导入:

import {toggleTodo} from 'actions';

然后您可以直接使用toggleTodo

dispatch(toggleTodo(id));