簡體   English   中英

無法將React元素綁定到事件監聽器

[英]Can't bind React element to event listener

我有以下代碼(編輯至相關部分):

main.js

import { mouseDownEvent } from '../common';

export default class MyComponent extends React.Component {
  componentDidMount() {
    this.refs.btn.addEventListener(
      'mousedown',
      mouseDownEvent.bind(this) // <-- not working!
    );
  }
  render() {
    return (
      <div ref="btn" className="btn"/>
    );
  }
}

common.js:

export const mouseDownEvent = event => {
  console.log(this); // <-- 'undefined'
}

然而, this里面mouseDownEventcommon.jsundefined 為什么?

您的問題是您正在使用箭頭功能:

export const mouseDownEvent = event => {
  console.log(this); // <-- 'undefined'
};

這將導致mouseDownEvent拿不到自身的動態this ; 它從詞匯外部范圍使用this 您應該改為使用function

export function mouseDownEvent (event) {
    console.log(this);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM