React事件处理笔记一

React 元素的事件处理和 DOM 元素类似。但是有一点语法上的不同:React 事件绑定属性的命名采用驼峰式写法,而不是小写。如果采用 JSX 的语法需要传入一个函数作为事件处理函数,而不是一个字符串(DOM 元素的写法)

HTML 通常写法是:

<button onclick="activateLasers()">  激活按钮</button>

React 中写法为:

<button onClick={activateLasers}>  激活按钮</button>

在 React 中另一个不同是你不能使用返回 false 的方式阻止默认行为, 你必须明确的使用 preventDefault。

例如,通常在 HTML 中阻止链接默认打开一个新页面,可以这样写:

<a href="#" onclick="console.log('点击链接'); return false">  点我</a>

在 React 的写法为:

function ActionLink() {  function handleClick(e) {    e.preventDefault();

    console.log('链接被点击');

  }

  return (    <a href="#" onClick={handleClick}>

      点我

    </a>

  );}

实例中 e 是一个合成事件。

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

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

class Toggle extends React.Component {

  constructor(props) {

    super(props);

    this.state = {isToggleOn: true};

    // 这边绑定是必要的,这样 `this` 才能在回调函数中使用

    this.handleClick = this.handleClick.bind(this);

  }

  handleClick() {

    this.setState(prevState => ({

      isToggleOn: !prevState.isToggleOn

    }));

  }

  render() {

    return (

      <button onClick={this.handleClick}>

        {this.state.isToggleOn ? 'ON' : 'OFF'}

      </button>

    );

  }

}

ReactDOM.render(

  <Toggle />,

  document.getElementById('example')

);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • React元素的事件处理和 DOM元素的很相似。但是有一点语法上的不同: !React事件绑定属性的命名采用驼峰式...
    Galette_LJ阅读 630评论 0 0
  • 深入JSX date:20170412笔记原文其实JSX是React.createElement(componen...
    gaoer1938阅读 8,116评论 2 35
  • 3. JSX JSX是对JavaScript语言的一个扩展语法, 用于生产React“元素”,建议在描述UI的时候...
    pixels阅读 2,925评论 0 24
  • 官网地址https://facebook.github.io/react/docs/hello-world.htm...
    pixels阅读 718评论 0 6
  • 以下内容是我在学习和研究React时,对React的特性、重点和注意事项的提取、精练和总结,可以做为React特性...
    科研者阅读 8,309评论 2 21