React如何進行事件傳參


今天在學習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即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM