我有一个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));
答案 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));