[英]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
里面mouseDownEvent
在common.js
是undefined
。 為什么?
您的問題是您正在使用箭頭功能:
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.