2015-08-29 40 views
0

我有這樣的代碼(編輯到相關部分):不能綁定陣營元素事件偵聽器

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' 
} 

然而common.js中的mouseDownEvent裏面的thisundefined。爲什麼?

回答

3

你的問題是,您使用的是箭頭功能:

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

這將導致mouseDownEvent拿不到自身的動態this;它使用來自詞法外部作用域的this。你應該改用function

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