2016-06-15 47 views
0

我有一個反應組件定義的擴展React.Component。它裏面,與渲染方法一起:無法存儲在反應組件中的let/var中的箭頭函數

constructor(props, context) { 
    super(props, context); 

    this.state = { 
     open: false, 
    }; 
} 

handleClose =() => { //this works 
    this.setState({open: false}); 
}; 

handleOpen =() => { //this works 
    this.setState({open: true}); 
}; 

let empty =() => {}; // does not work, error Parsing error:  Unexpected token 

我看來,如果我任何前綴的箭頭功能與Let或常量得到一個意外標記錯誤。我在這裏錯過了什麼嗎?

感謝

+0

*「我在這裏錯過了什麼嗎?」*這是無效的語法。不知道你期待什麼樣的答案... –

回答

2

閱讀babel documentation關於類。使用letconst不是ES6的一部分可能的前綴類的定義

0

ECMA 2015 spec似乎只允許methodsstatic methods類定義的身體。

因此,在這種情況下,不允許賦值語句,因此從babel的錯誤Unexpected token

0

您試圖使用實驗性ES7功能,可能只有ES6啓用(也不能在類中前綴let或const)。如果你使用的是babel6,切換到正確的插件應該很簡單。從基本相同的問題看這個答案:How to use ES6 arrow in class methods?

0

您似乎正在使用class properties declartion proposal。所提出的語法是:

class ClassWithoutInits { 
    myProp; 
} 

class ClassWithInits { 
    myProp = 42; 
} 

正如你所看到的,沒有letconstvarlet empty =() => {};不起作用,因爲它不是有效的語法,就像錯誤消息告訴你的一樣。

相關問題