React事件绑定

React 元素的事件处理和 DOM 元素类似。但是有一点语法上的不同:
React 事件绑定属性的命名采用驼峰式写法,而不是小写。
如果采用 JSX 的语法你需要传入一个函数作为事件处理函数,而不是一个字符串(DOM 元素的写法)
还有一个核心点就是,React事件中的回调函数里面的this是undefined,因为在React中的this是指向组件本身
所以如果想要将回调函数可以绑定事件的话,需要我们自己手动利用bind方法进行指向
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app"></div>
</body>
</html>
<script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
<script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
<script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
<script type="text/babel">
class MyComponent extends React.Component{
    constructor(props){
        super(props)

        //让回调函数指向全局的this属性
        this.handleClick = this.handleClick.bind(this)
    }

    //类中方法的写法
    handleClick(data, e){

        console.log('触发事件')

        // 传过来的参数值
        console.log(data)

        // 事件的对象
        console.log(e)
    }

    handleClick3(data,e){
        console.log(data)
        console.log(e)
    }

    render(){
        return (
            <div>
                <p><button onClick={this.handleClick.bind(this, '你好,今天星期四')}>第一种绑定事件</button></p>
                <p><button onClick={(e) => this.handleClick3('你好', e)}>第二种写法绑定事件</button></p>
            </div>
        )
    }

}
ReactDOM.render(
    <MyComponent />, document.getElementById('app')
)
</script>


powered by GitbookEdit Time: 2023-04-08 10:28:32