当前位置:  开发笔记 > 编程语言 > 正文

使用ES6时,如何在一个文件中定义导入的函数,而在另一个文件中不定义?

如何解决《使用ES6时,如何在一个文件中定义导入的函数,而在另一个文件中不定义?》经验,为你挑选了2个好方法。

我正在使用babel/ES6和webpack.我正在两个不同的地方导入相同的'actions'文件 - 它导出一堆函数.在一个地方它返回一个模块,另一个undefined:

actions.js

export function test() { ... }
export function test2() { ... }

App.js

import actions from './actions'
class App extends React.Component { ... }
console.log(actions);         //<--------  Object{test:function,test2:function)
export default connect((state) => { ... },actions)(App);

编辑 App.js工作的原因是因为它实际上import * as actions是在下面使用sugested ,我只是在示例中重新输入错误

NestedComponent.js

import actions from './actions'
class NestedComponent extends OtherComponent { ... }
console.log(actions);         //<--------  logs undefined
export default connect((state) => { ... },actions)(NestedComponent);

这与webpack定义模块/文件的顺序有关吗?



1> 小智..:

我遇到了一个类似的问题,由循环依赖引起.试图从文件'B'中导入文件'A'中的常量,然后又尝试从文件'A'导入.


那解决了我的问题。谢谢!

2> Felix Kling..:

这两种情况都不适用,因为您导入的值不正确.import foo from '...'导入模块的默认导出,但您没有默认导出,只有命名导出.

你应该使用的是什么

import {test, test2} from './actions';
// or
import * as actions from './actions';

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有