React:事件处理

2018-06-19 11:05 更新
      React的事件处理和原生JavaScript事件在本质上是一样的,比如:MouseEvents事件用于点击处理器,Change事件用于表单元素变化等等。
所有的事件在命名上与原生JavaScript规范也是一致的,并且触发的条件是相同的。
示例:

<button onClick={this.handleSaveClick}>保存</button>

当用户点击这个按钮时,组件的handleSaveClick方法会被调用。


注意:虽然上面代码的写法类似HTML的内联事件处理器(在HTML中是不推荐的),但在渲染后的HTML页面内,我们并不会看到onClick这个方法,这只是React用这种写法来绑定事件处理器。


这里还要注意一点的是,如果你要调取触控事件,就需要调用下面的代码来启用。

React.initializeTouchEvents(true)


看个小例子:

var MyInput=React.createClass({   

  getDefaultProps:function(){   

    return {   

      placeholder:'请输入值'      

    };   

  },   

  getInitialState:function(){   

    return {    

      name:"请输入"   

    }   

  },   

  handleChange:function(event){   

    var name=event.target.value;   

    this.setState({"name":"输入值为:"+name});   

  },   

  render:function(){   

    return (   

      <div>   

        <input ref='name' onChange={this.handleChange} type='text' placeholder={this.props.placeholder}/>   

        <div>{this.state.name}</div>   

      </div>   

    );   

  }   

});   

ReactDOM.render(   

  <MyInput/>,   

  document.body   

);

效果图:



组件状态默认是null,我们可以通过getInitialState方法将其初始化。


注意:有一点很重要,永远不要尝试通过setState或replaceState以外的方式修改state对象。类似this.state.isClicked=true通常不是一个好方法,因为它无法通知React是否需要重新渲染组件,而且可能会导致下次调用setState时出现意外结果。


总结:

  • 我们可以像在HTML里添加内联事件一样的方式给React组件上绑定事件处理器。
  • 当组件状态有更新时,会执行render方法,触发重绘。
  • 用this.setState()来更新状态


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号