2016-09-27 68 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

相關問題