【发布时间】:2019-08-04 05:59:29
【问题描述】:
我在 Popper 中显示了以下显示侧边栏开关。因此,理想情况下,如果您单击其他位置(Popper 元素之外),Popper 应该会消失。如果您在 Popper 元素内单击,它不应该去任何地方。当我点击 Switch 或 Display Sidebar 文本时,那个 Popper 消失了。我用<div> 包裹了 Popper,它也没有帮助。
波普尔https://material-ui.com/api/popper/
切换https://material-ui.com/api/switch/
ClickAwayListener https://material-ui.com/utils/click-away-listener/
下面是波普尔代码
<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
【问题讨论】:
-
如果您能提供一个重现此内容的CodeSandbox,将会很有帮助。我怀疑您应该将
ClickAwayListener直接放在Paper周围(在Fade内),但是没有简单的方法来尝试这个,我不确定这是正确的解决方案。 -
好的,虽然我不知道为什么当我点击它时,clickawaylistener 会出错。 codesandbox.io/s/8pkm3x1902
-
您没有定义 handleClickAway()。你能补充一下吗? @Extelliqent
-
已修复,谢谢,在这里。 codesandbox.io/s/8pkm3x1902
-
问题沙盒对我有用吗?
标签: reactjs material-ui