2017-02-25 61 views
1

我有麻煩解決流動式警告如何避免ES6箭頭功能流動型錯誤

當這個代碼塊檢查

export const login = (email: string, password: string) => ({ 
    type: types.LOGIN, 
    responseTypes: [types.LOGIN_SUCCESS, types.LOGIN_FAILURE], 
    promise: (client: Client) => client.post('/auth/sign_in', { email, password }), 
}); 

我收到警告

error Unexpected parentheses around single function argument having a body with no curly braces arrow-parens

但是,當我刪除了圍繞(client: Client)的括號時,我收到錯誤

Module build failed: SyntaxError: Unexpected token

client之後的冒號。

更改功能下面

export const login = (email: string, password: string) => ({ 
    type: types.LOGIN, 
    responseTypes: [types.LOGIN_SUCCESS, types.LOGIN_FAILURE], 
    promise: (client: Client) => { return client.post('/auth/sign_in', { email, password }); }, 
}); 

回報以下警告:

error Unexpected block statement surrounding arrow body arrow-body-style

我在什麼正確的語法將是解決這一問題的警告有點困惑。謝謝。

回答

0

我認爲這個問題出現在你的第一個函數中,當它應該是大括號時,你會在括號中包裹正文。

export const login = (email: string, password: string) => { 
    type: types.LOGIN, 
    responseTypes: [ 
    types.LOGIN_SUCCESS, types.LOGIN_FAILURE 
    ], 
    promise: (client: Client) => client.post('/auth/sign_in', { email, password }), 
}; 

你也可以寫這種方式(不使用單式速記。

export const login = (email: string, password: string) => { 
    type: types.LOGIN, 
    responseTypes: [ 
    types.LOGIN_SUCCESS, types.LOGIN_FAILURE 
    ], 
    promise: (client: Client) => { return client.post('/auth/sign_in', { email, password }); }, 
}; 
+1

謝謝jordan,b ut函數被包裝在括號中,以便它可以用'type','responseTypes'和'promise'屬性返回對象字面值。問題是'promise'(箭頭函數)的值會導致Flow錯誤。 –

+1

啊,你說得對。我的道歉,在回答之前我沒有很好地研究這個問題。 – jordanwillis

+0

不用擔心,我很欣賞幫助回答的努力,無論如何 –

3

你得到的錯誤是從eslint arrow-parens規則,而不是流。

你可以解決它通過改變你的eslint配置或嘗試ES6 method syntax

promise(client: Client) { 
    return client.post('/auth/sign_in', { email, password }) 
}, 
+0

哦,哇,我覺得愚蠢,我完全忽略了這是一個錯誤的錯誤,而不是流量錯誤。謝謝。如果您有解決此警告的建議,我將不勝感激,謝謝。 –

+0

發生在我身上:)編輯;您可以使用es6方法語法。 –