引用# react hooks 点击空白区域隐藏组件
1. hooks
const [moreList, toggleMoreList] = useState(false)
useEffect(() => {
document.addEventListener("click", (e) => toggleMoreList(false));
}, [])
const stopPropagation = (e) => {
e.nativeEvent.stopImmediatePropagation();
}
const onShow = (e) => {
stopPropagation(e);
toggleMoreList(!moreList)
}
<button onClick={onShow}>
点击更多
</button>
<div style={{display: `${moreList ? 'block' : 'none'}`}}>
<ul role="menu" tabIndex="-1" className="cpJjC _g z">
<li role="none">
</li>
</ul>
</div>
2.class
this.state={
showInput:false
}
componentDidMount() {
document.addEventListener('click', (e) => {
this.setState({
showInput: false,
})
})
}
stopPropagation = (e) => {
e.nativeEvent.stopImmediatePropagation();
}
onShow = (e) => {
console.log(123)
this.stopPropagation(e);
this.setState({
showInput: !this.state.showInput
})
}
render() {
const { showInput } = this.state
return(
<>
<div onClick={(e) => this.onShow(e)}> 点击更多 </div>
<div style={{display: `${showInput ? 'block' : 'none'}`}}
)>
</>
)}