我将ReactJS用于以下组件:
var TypeaheadBox = React.createClass({
_handleClick(e) {
if (ReactDOM.findDOMNode(this.refs.typeaheadBox).contains(e.target)) {
return;
};
this.props.onClickOutside();
},
componentWillMount: function() {
document.addEventListener('click', this._handleClick, false);
},
componentWillUnmount: function() {
document.removeEventListener('click', this._handleClick, false);
},
render() {
return (
<div id='typeahead-box' ref='typeaheadBox'>
...
</div>
);
}
});
如您所见,我为点击事件添加了一个监听器。在调试时,我意识到当单击事件发生时,_handleClick函数被调用两次,在第二次调用时, this.refs 字段为空,所以会引发错误。
我做错了什么?