ES6還是個新手,所以試圖理解下面這兩個函數之間存在差異的原因。我正在使用React,並且注意到在編寫設置狀態的非ES6函數時出現錯誤。這發生在componentDidMount中。這個ES6箭頭函數和常規函數的區別?
這樣在ES6工作並返回我需要什麼:
(pos) => this.setState({
lat: pos.coords.latitude,
lng: pos.coords.longitude,
})
然而,這種方式會引發錯誤 - 「遺漏的類型錯誤:this.setState是不是一個函數」
function(pos) {
this.setState({
lat: pos.coords.latitude,
lng: pos.coords.longitude
})
}
這些不完全一樣嗎?任何人都可以解釋爲什麼它會拋出這個錯誤?
下面是代碼從反應類,以提供更多的上下文:
var GeolocationExample = React.createClass({
getInitialState: function() {
return {
lat: '',
lng: '',
};
},
componentDidMount: function() {
navigator.geolocation.getCurrentPosition(
// Where I'm placing each of the above mentioned functions,
(err) => alert(err.message),
);
},
render: function() {
return (
<View>
<Text>
<Text style={styles.title}>Initial position: </Text>
{this.state.lat}
</Text>
<Text>
<Text style={styles.title}>Current position: </Text>
{this.state.lng}
</Text>
</View>
);
}
});
任何和所有的幫助表示讚賞。謝謝!
'的console.log (this)' – Andreas
as @Andrey指出:'箭頭函數隱含了這個綁定',所以帶有'(function(pos){...})。bind(this)'的非箭頭應該等同於箭頭1 – birdspider