2016-09-27 44 views
0

我正在使用redux和ES6在react.js中工作。我有一个行动文件导出的函数,像这样:为什么我的函数在ES6中被导入为值'0'?

MonthlyRevenueActions.js 

export function fetchMonthlyRevenue(name, startDate, endDate) { 
    return function(dispatch) { 
     dispatch(console.log("name": " + name + ", start: " + startDate + ", end: " + endDate)); 
    } 
} 

然后在我的容器代码,我有一个import语句,并尝试使用该功能,但我可以在Chrome DevTools看到变量的值是0:

MonthlyDisplayContainer.js: 
import {otherFunc, fetchMonthlyRevenue, otherFunctionTwo} from 'actions/monthly/MonthlyRevenueActions' 

const mapStateToProps = (state, ownProps) => { 

    //... other code that's being executed 

    fetchMonthlyRevenue(name, startDate, endDate); 
} 

Chrome DevTools snapshot

我可以看到值namestartDateendDate,但fetchMonthlyRevenue()功能仅仅是0

我期待我在思考范围时遗漏了一些东西(我是ES6的新手),但是对于我的生活却无法弄清楚如何执行这个功能。

在此先感谢您的帮助。

+2

我不了解这一行代码。你正在执行一个函数,它返回一个函数,并且对返回值无所作为?是的0是奇怪的,但是......代码也是如此...... –

+0

你得到的错误是什么? – searsaw

+0

它没有给出错误...它是代码运行通过,没有任何错误。如果我把一个'console.log()'放在它的'fetchMonthlyRevenue()'行旁边打印出来。 – Cuga

回答

0

Chrome可能正在搜索您导入的转码源。你在使用源代码吗?也许他们没有被正确创建或加载。

巴贝尔做以下进口...

在...

import { a } from 'a' 
a() 

了...

'use strict'; 

var _a = require('a'); 

(0, _a.a)(); 

Check it out on the Babel REPL

(这改变了依赖进口的类型,例如默认情况下,故名。)

注意如何导入值的函数调用最后一行改为:

(0, _a.a)(); 
+0

是的,我们使用源地图。我认为源代码正在chrome中正确加载......我可以在同一个代码块中看到其他变量的值......并且在同一个文件中,只是在不同的函数中......我可以执行函数I'进口。我怀疑这是取决于执行方法的时间与范围有关......但我不明白为什么 – Cuga

+0

@Cuga其他变量可能不是来自另一个模块的进口?这就是为什么你没有看到他们与导入函数相同的行为。 – sdgluck

+0

我很感激帮助。就我所知,所有其他导入都在该文件中工作......以及在同一文件中的另一个方法中使用的确切导入。如果这个导入是否存在于它正在执行'mapStateToProps'的时候,我是半好奇的......如果这是有道理的。 – Cuga

相关问题