事件

const Comp = React.createClass({

  clickHandler (event) {
    console.log(event)
  },
  render () {
    return <div>
            <button onClick={this.clickHandler}>点我</button>
        </div>
  }
})
ReactDOM.render(<Comp />, document.getElementById('root'))

点击时可以看到event对象的相关属性


图片.png

event对象的通用属性

    boolean  bubbles //事件是否可以冒泡
    boolean cancelable// 事件是否可以取消
    DOMEventTarget currentTarget //
    boolean defaultPrevented // 事件是否禁止默认行为
    number eventPhase // 事件所处的阶段
    boolean isTrusted //事件是否可信,可信事件即用户自定义触发的事件,不可信事件即用js代码触发的事件
    DOMEvent nativeEvent  //使用原生的浏览器发出的事件对象
    void preventDefault() // 禁止默认行为
    void stopPropagation() // 禁止冒泡
    DOMEventTarget target:
    number timeStamp
    string type

不同事件对象的特有属性可参考这篇文章
在上例中看到event对象的各个属性值都是null,在react中是event合成事件对象,类似于事件池,只在调用时会存在相关属性,可以修改代码来看。

const Comp = React.createClass({

  clickHandler (event) {
    console.log(event)
    console.log(event.type)
    console.log(event.bubbles)
  },
  render () {
    return <div>
            <button onClick={this.clickHandler}>点我</button>
        </div>
  }
})
ReactDOM.render(<Comp />, document.getElementById('root'))

图片.png

react支持的事件可以参考这里
中文版api参考


自定义事件
其实就是将定义的方法作为props给传递进去

const Comp = React.createClass({
  getInitialState () {
      return {
          'name': ''
        }
    },
  changeHandle (event) {
      this.setState({
          'name': event.target.value
        })
      this.props.onChangeName(this.state.name) //把自定义的事件作为props给传递进来
    },
  render () {
      return <div>
            <input type="text" value={this.state.name} onChange={this.changeHandle} />
        </div>
    }
})
function changeNameHandle (name) { //自定义事件
  console.log(name)
}
ReactDOM.render(<Comp onChangeName={changeNameHandle} />, document.getElementById('root'))
图片.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容