react 事件处理

  • 普通语法中,阻止默认行为可以通过返回false来进行:
<a href="#" onclick="console.log('The link was clicked.'); return false">
     Click me
    </a>
  • react中必须显示的使用preventDefault
function handleClick(e) {
   e.preventDefault();
   console.log('The link was clicked.');
   }
  • ❗️⭐️在react中,必须谨慎对待 JSX 回调函数中的 this,在 JavaScript 中,class 的方法默认不会绑定this。如果你忘记绑定 this.handleClick 并把它传入了 onClick,当你调用这个函数的时候 this 的值为 undefined

    这和js函数工作原理有关

    解决方法:

    1. 使用 class fields 正确的绑定回调函数:
 handleClick = () => {
    console.log('this is:', this);
 }

  1. 在回调中使用箭头函数:onClick={(e) => this.handleClick(e)}

  2. 在constructor中绑定 this.handleClick = this.handleClick.bind(this);

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

推荐阅读更多精彩内容

  • 回调函数中的 this,类的方法默认是不会绑定 this 的。如果忘记绑定 this.handleClick 并把...
    mathfriend阅读 196评论 0 1
  • react 的事件处理和DOM的事件处理其实是比较像的,但是因为jsx更加偏向js,所以我们定义事件处理函数的时候...
    叶绿素yls阅读 157评论 0 0
  • React 事件处理 React 元素的事件处理和 DOM 元素类似。但是有一点语法上的不同: React 事件绑...
    习惯芥末味阅读 241评论 0 0
  • React 元素的事件处理和 DOM 元素类似。但是有一点语法上的不同:React 事件绑定属性的命名采用驼峰式写...
    mathfriend阅读 156评论 0 1
  • 处理事件 react事件使用驼峰命名,而不是完全小写。通过JSX我们可以传递一个函数作为事件处理程序。与DOM绑定...
    张延伟阅读 1,586评论 0 0