На самом деле, я использую isAvatarUserMenuOpen
prop в классе UserDataPresentation
, чтобы узнать, открыт модал или нет. Я использую это состояние, чтобы создать условие, которое влияет на onClick, чтобы открыть и закрыть модальное окно. Но мне нужно закрыть этот мод с любым кликом, сделанным вне этого модального режима, на самом деле он закрывается только в той же кнопке, которая его открывает.
Я делал handleClick, который добавляет слушателя при открытии модального окна, и когда я щелкаю за пределами модального окна, отображается предупреждение «close de modal!». Мне нужно удалить это предупреждение и найти способ закрыть модальное окно, как это происходит при нажатии и открытии и закрытии модального окна.
export class UserDataPresentation extends React.Component<Props> {
node: any
componentWillMount() {
document.addEventListener('mousedown', this.handleClick, false)
}
componentWillUnmount() {
document.removeEventListener('mousedown', this.handleClick, false)
}
handleClick = (e: { target: any }) => {
if (!this.node.contains(e.target)) {
alert('close de modal!')
return
}
}
render() {
const { openMenuUserModal, closeMenuUserModal, isAvatarUserMenuOpen } = this.props
return (
<React.Fragment>
<div className="user-data-container" ref={isAvatarUserMenuOpen ? (node) => (this.node = node) : null}>
<div className="text">
<p>Wolfgang Amadeus</p>
</div>
<div className="avatar">
<img src={avatarPhoto} />
</div>
<a href="#" onClick={isAvatarUserMenuOpen ? closeMenuUserModal : openMenuUserModal}>
<div className="svg2">
<SVG src={downArrow} cacheGetRequests={true} />
</div>
</a>
</div>
</React.Fragment>
)
}
}