我有一个显示侧边栏开关,它显示在弹出框内部。所以理想情况下,如果你点击其他地方(弹出框元素外),弹出框应该消失。如果你在弹出框内点击,它就不应该消失。但是当我点击开关或显示侧边栏文本时,弹出框会消失。我使用
Popper https://material-ui.com/api/popper/ Switch https://material-ui.com/api/switch/ ClickAwayListener https://material-ui.com/utils/click-away-listener/ 以下是 Popper 代码。
<div>
包裹了弹出框,但这并没有帮助解决问题。Popper https://material-ui.com/api/popper/ Switch https://material-ui.com/api/switch/ ClickAwayListener https://material-ui.com/utils/click-away-listener/ 以下是 Popper 代码。
<ClickAwayListener onClickAway={this.handleClickAway}>
<div>
<Popper className={classes.popper} id={id} open={open} placement="bottom-end" anchorEl={anchorEl} transition>
{({ TransitionProps }) => (
<Fade {...TransitionProps} timeout={350}>
<Paper className={classes.SliderBox}>
<Switch
checked={this.state.checkedB}
onChange={this.handleChange('checkedB')}
value="checkedB"
color="primary"
onClick={handleDrawer}
className={classNames(classes.menuButton, sidebar && classes.hide)}
/>
Display Sidebar
</Paper>
</Fade>
)}
</Popper>
</div>
</ClickAwayListener>
我这里有样本(虽然我无法使其工作,我不知道为什么在点击时它会出错)https://codesandbox.io/s/8pkm3x1902
ClickAwayListener
放在Paper
的周围(在Fade
内部),但是没有简单的方法来尝试这个解决方案,所以我不确定这是否是正确的解决方案。 - Ryan Cogswell