2016-09-03 42 views
2

我有這個div裏面我的一個組成部分反應:的addEventListener不是一個函數錯誤

<div ref={node => this.domNode = node} style={this.getStyle()}>{ this.props.children }</div> 

渲染方法時,我這樣做是componentDidMount

this.domNode.addEventListener('mousedown', this.onDrag); 

有錯誤

this.domNode.addEventListener is not a function 

回答

0

您的ref回調的arguemnt(node)可以是null。你需要在綁定你的監聽器之前檢查一下。

請注意,當所引用的組件被卸載並且每當ref發生變化時,舊的ref將以null作爲參數被調用。

https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute

+0

在什麼生命週期函數中調用'addEventListener'? – Scarysize

+0

我這樣做,如果(this.domNode!= null){this.domNode.addEventListener('mousedown',this.onDrag); }我仍然有相同的錯誤 – scully

+0

我把它稱爲componentDidMount – scully

0

你必須把ReactDOM.findDOMNode周圍。

componentDidMount =() => { 
    ReactDOM.findDOMNode(this.domNode).addEventListener('mousedown', this.onDrag); 
}