类似于“抽屉/对话框”如何放下背景阴影,我该如何使用Popper组件做同样的事情?
答案 0 :(得分:0)
您可以使用Backdrop组件来完成此操作。这是一个以Simple Popper demo code作为起点的示例:
class SimplePopper extends React.Component {
state = {
anchorEl: null,
open: false
};
handleClick = event => {
const { currentTarget } = event;
this.setState(state => ({
anchorEl: currentTarget,
open: !state.open
}));
};
render() {
const { classes } = this.props;
const { anchorEl, open } = this.state;
const id = open ? "simple-popper" : null;
return (
<React.Fragment>
<Backdrop open={open} onClick={() => this.setState({ open: false })} />
<div>
<Button
aria-describedby={id}
variant="contained"
onClick={this.handleClick}
>
Toggle Popper
</Button>
<Popper id={id} open={open} anchorEl={anchorEl} transition>
{({ TransitionProps }) => (
<Fade {...TransitionProps} timeout={350}>
<Paper>
<Typography className={classes.typography}>
The content of the Popper.
</Typography>
</Paper>
</Fade>
)}
</Popper>
</div>
</React.Fragment>
);
}
}
请注意此处的主要补充内容
<Backdrop open={open} onClick={() => this.setState({ open: false })} />
由于Backdrop
组件的open
道具使用与open
组件相同的Popper
状态,因此只要打开弹出器,它就会出现。
onClick
道具允许用户通过在背景上的任意位置单击来关闭弹出窗口和背景。如果您不想要此功能,则可以排除道具:
<Backdrop open={open} />