gpt4 book ai didi

reactjs - 通过单击事件/Material UI 关闭弹出窗口

转载 作者:行者123 更新时间:2023-12-05 03:07:58 25 4
gpt4 key购买 nike

我正在为我的 React 应用程序使用 popover。它工作正常,但我想通过单击其中一个菜单项来添加关闭弹出窗口的功能。

我可以通过在弹出窗口外单击来关闭弹出窗口。是否可以通过单击弹出窗口中的一个菜单项来关闭弹出窗口?

当前 View

enter image description here

代码

class Home extends React.Component{

constructor(props){
super(props);
this.state = {
open: false
}
}

handleTouchTap = (event) => {
// This prevents ghost click.
event.preventDefault();

this.setState({
open: true,
anchorEl: event.currentTarget,
});
};

handleRequestClose = () => {
this.setState({
open: false,
});
};

render(){
return(
<div>
<div id="PaymentPanel">
<div className="PaymentTitle">Spent Last 14 Days<button className="PaymentToggle" onClick={this.handleTouchTap}>▼</button></div>

<Popover
open={this.state.open}
anchorEl={this.state.anchorEl}
anchorOrigin={{horizontal: 'left', vertical: 'top'}}
targetOrigin={{horizontal: 'right', vertical: 'top'}}
onRequestClose={this.handleRequestClose}
>
<Menu>
<p className="menuItem" onClick={this.clickHandle}>{!this.state.priceBar? "Spent Last 14 Days" : "Spent Last 14 Days"}</p>
<p className="menuItem" onClick={this.clickHandle}>{this.state.priceBar? "Spent Last 30 Days" : "Spent Last 30 Days"}</p>
</Menu>
</Popover>
</div>
</div>
)
}
}

最佳答案

clickHandle 调用handleRequestClose 方法。我修改了你的代码,看看这里的工作示例 - https://jsfiddle.net/gjxyc315/

clickHandle = () => {
this.handleRequestClose();
};
...

<p className="menuItem" onClick={this.clickHandle}>...</p>

您也可以将 handleRequestClose 方法直接应用于菜单项标签的 onClick 属性。你会得到相同的结果。

<p className="menuItem" onClick={this.handleRequestClose}>...</p>

关于reactjs - 通过单击事件/Material UI 关闭弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46319022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com