zoukankan      html  css  js  c++  java
  • React事件处理

    事件处理

    React元素的时间处理和DOM元素的很相似。但是有一点语法上的不同;

    • React时间绑定属性的命名采用驼峰式写法,而不是小写。
    • 如果采用JSX的语法,你需要传入一个函数作为时间处理函数,而不是一个字符串(DOM元素的写法)

    例如,传统的HTML:

    <button onclick="activateLasers()">
      Activate Lasers
    </button>
    

    React中稍有不同:

    <button onClick={事件处理函数}>
        Activate Lasers
    </button>
    

    在React中另外一个不同是你不能使用返回false的方式组织默认行为。你必须明确使用preventDefault。例如,传统的HTML中阻止链接默认打开一个新页面,你可以这样写:

    <a href="#" onclick="console.log('The link was clicked.'); return false">
      Click me
    </a>
    

    而在React中,应该这样写:

    function ActionLink(){
        function handleClick(e){
            e.preventDefault();
            console.log(11111)
        }
        return(
            <a  href="#" onClick={handleClick}>
                Click me
            <a/>
        )
    }
    

    在这里,e 是一个合成事件。React 根据 W3C spec 来定义这些合成事件,所以你不需要担心跨浏览器的兼容性问题。查看 SyntheticEvent 参考指南来了解更多。

    使用 React 的时候通常你不需要使用 addEventListener 为一个已创建的 DOM 元素添加监听器。你仅仅需要在这个元素初始渲染的时候提供一个监听器。

    当你使用 ES6 class 语法来定义一个组件的时候,事件处理器会成为类的一个方法。例如,下面的 Toggle 组件渲染一个让用户切换开关状态的按钮:

    class  Toggle extends React.Component{
        constructor(props){
            super(props);
            this.handelClick= this.handelClick.bind(this);
        }
        
        handelClick(){
            this.setState(prevState=>({
                isToggleOn:!prevState.isToggleOn
            }))
        }
        
        render(){
            return(
                <button onClick={this.handleClick}>
                    {this.state.isToggleOn? 'ON':'OFF'}
                </button>
            )
        }
    }
    
    ReactDOM.render(
        <Toggle />,
        document.getElementById('root')
    );
    

    你必须谨慎对待JSX回调函数中的this,类的方法默认是不会绑定this的。如果你忘记绑定this.handleClick并把它传入onClick,当你调用这个函数的时候,this的值会是unde.

    这并不是 React 的特殊行为;它是函数如何在 JavaScript 中运行的一部分。通常情况下,如果你没有在方法后面添加 () ,例如 onClick={this.handleClick},你应该为这个方法绑定 this

    只研朱墨作春山
  • 相关阅读:
    UARTRS232与RS485的关系
    RS-485总线通信协议
    【转】TCP(协议号6)的方方面面
    【转】Android 编程下的代码混淆
    【转】阻塞与非阻塞socket的优缺点
    【转】Socket状态变迁图
    【转】Spring中IoC的优点与缺点
    linux_UAPI_转
    数组初始化
    中兴被制裁:到底对谁说话 13亿人民中1人有话说
  • 原文地址:https://www.cnblogs.com/guolintao/p/9019498.html
Copyright © 2011-2022 走看看