Поскольку вы хотите получить доступ к , это , которое является контекстом вашего текущего класса.
Есть несколько подходов к этому.
1. привязать свой handleClickOutside
в конструкторе
constructor(props){
super(props);
this.handleClickOutside = this.handleClickOutside.bind(this);
}
2. преобразование handleClickOutside
, чтобы быть функцией стрелки.
handleClickOutside = (e: SyntheticEvent<>) => {
console.log(`Inside --->`); // This function is triggering
console.log(this); // I am getting #document whole html
console.log(this.wrapperRef); // undefined
console.log(wrapperRef); // Uncaught ReferenceError: wrapperRef is not defined
if (this.wrapperRef && !this.wrapperRef.contains(e.target)) {
this.setState({
showMyComponent: false,
});
}
}
3. Или вы можете привязать его к событию клика
return (
<div onClick={this.handleClick.bind(this)} ref={this.wrapperRef}>
{this.props.children}
{this.state.showMyComponent && (
<div>
<div>{myComponentBody}</div>
</div>
)}
</div>
);