Reactjs 反应:addEventListener不是函数错误

Reactjs 反应:addEventListener不是函数错误,reactjs,Reactjs,我在组件中的渲染方法中有这个div <div ref={node => this.domNode = node} style={this.getStyle()}>{ this.props.children }</div> 有一个错误 this.domNode.addEventListener is not a function ref回调的arguemnt(节点)可以是null。在绑定侦听器之前,您需要检查这一点 请注意,当被引用的组件被卸载时,并且每当ref发

我在组件中的渲染方法中有这个div

<div ref={node => this.domNode = node} style={this.getStyle()}>{ this.props.children }</div>
有一个错误

this.domNode.addEventListener is not a function
ref回调的arguemnt(
节点
)可以是
null
。在绑定侦听器之前,您需要检查这一点

请注意,当被引用的组件被卸载时,并且每当ref发生更改时,旧ref将以null作为参数调用


中,必须在其周围放置一个ReactDOM.findDOMNode

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

我正在使用React的版本
16.6.3
,我也遇到了您的问题,并使用此方法解决了问题

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

您在哪个生命周期函数中调用
addEventListener
?如果(this.domNode!=null){this.domNode.addEventListener('mousedown',this.onDrag);},我就这样做了我仍然有相同的错误,我在ComponentDidMount中调用它,我认为是因为this.domNode返回一个react元素,它没有addeventlistener作为函数,但是我不确定如果你在div上有ref,那么这个节点应该是一个实际的dom节点
componentDidMount() {
    let domNode = ReactDOM.findDOMNode(this.domNode);
    if(domNode) {
      domNode.addEventListener('mousedown', this.props. onDrag);
    }
}