今天在學習React的es6語法的時候,發現了個有趣的現象,就是this的指向問題。es6的this不同於es5,它在創立函數伊始便已經存在了,而不是像es5一樣,睡調用的函數,this指向誰。但是這也產生了一個令人頭疼的問題,當改變狀態this.setState的時候,明顯會報錯,這是this指針的原因,那如何解決呢?只需要通過在調用函數的時候綁定this或者穿個e獲取即可,即:
<button onClick={this.openSwitch.bind(this)}> please click me</button>
或者
<button onClick={onClick={e => this.openSwitch(e)}}> please click me</button>
那我們如果想傳遞參數呢?只需要在bind里面的參數繼續添加即可,再在定義的事件里面進行接收即可,完全代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>事件</title>
<script src="./bower_components/react/react.production.min.js"></script>
<script src="bower_components/react/react-dom.production.min.js"></script>
<script src="bower_components/babel/browser.js"></script>
</head>
<body>
<div id="test2"></div>
</body>
<script type="text/babel">
class Btn2 extends React.Component {
openSwitch(status){
console.log(status);
console.log(this);
}
render() {
return (
<button onClick={this.openSwitch.bind(this,123)}> please click me</button>
)
}
}
ReactDOM.render(
<Btn2/>,
document.getElementById("test2")
)
</script>
</html>
結果如下:

如果想得到event的話,只需要在形參的后面加上event即可
