如何在 React 中使用多材质 ui 对话框?

知识

我想在注册页面和登录页面中使用两个对话框。我想要做的实现是点击首页上的注册按钮时显示的注册屏幕,以及点击注册页面上的登录按钮时显示的登录屏幕。

我在 App.js 上写了打开状态。但问题是当它用 App.js 编写时,两个 modal open..

有谁知道怎么解决?

应用程序.js

  const App = () => {

    const [open, setOpen] = useState(false);
    
    const handleClickOpen = () => {
      setOpen(true);
    };
  
    const handleClose = () => {
      setOpen(false);
    };


    return (
      <div>
        <Top handleClickOpen={handleClickOpen}/>
        <SignupModal open={open} handleClose={handleClose} />
        <LoginModal open={open} handleClose={handleClose} />
      </div>
    )

顶.js

const Top = (props) => {
    const classes = useStyles();

    return (
        <React.Fragment>
            <div style={style}>
            <Button variant="outlined" className={classes.loginButton} onClick={props.handleClickOpen}>
              Login
            </Button>
            </div>
            <h1>Toppage</h1>
        </React.Fragment>
    );
}

注册Modal.js

const SignupModal = (props) => {
  return (
    <div>
      <Dialog
        open={props.open}
        onClose={props.handleClose}
        aria-labelledby="alert-dialog-title"
        aria-describedby="alert-dialog-description"
      >
        <DialogTitle id="alert-dialog-title" className={classes.title}>Sign up</DialogTitle>
        <DialogContent className={classes.content}>
            <div className={classes.text}> 
                <TextField id="standard-basic" label=“name” fullWidth/>
                <TextField id="standard-basic" label=“email” fullWidth/>
                <TextField id="standard-basic" label=“password” fullWidth/>
                <TextField id="standard-basic" label=“pass”word fullWidth/>
            </div>
        </DialogContent>
        <p className={classes.toLogin}>to Login</p>
        <DialogActions>
          <Button onClick={props.handleClose} className={classes.signUpButton}>
            Send
          </Button>
        </DialogActions>
      </Dialog>
    </div>
  );
}

登录模式文件

const LoginModal = (props) => {
  return (
    <div>
      <Dialog
        open={props.open}
        onClose={props.handleClose}
        aria-labelledby="alert-dialog-title"
        aria-describedby="alert-dialog-description"
      >
        <DialogTitle id="alert-dialog-title" className={classes.title}>Login</DialogTitle>
        <DialogContent className={classes.content}>
            <div className={classes.text}> 
                <TextField id="standard-basic" label=“name” fullWidth/>
                <TextField id="standard-basic" label=“pass”word fullWidth}/>
            </div>
        </DialogContent>
        <DialogActions>
          <Button onClick={props.handleClose} className={classes.signUpButton}>
            Login
          </Button>
        </DialogActions>
      </Dialog>
    </div>
  );
}
export default LoginModal


贝蒂达

您在两个模态上共享状态,这就是原因。

解决方案很简单,有2个状态;一个将确定是否SignupModal打开,另一个用于LoginModal.

const App = () => {
  const [openLogin, setOpenLogin] = useState(false);
  const [openSignup, setOpenSignup] = useState(false);

  return (
    <div>
      <Top
        onClickLogin={() => setOpenLogin(true)}
        onClickSignup={() => setOpenSignup(true)}
      />
      <SignupModal open={openLogin} handleClose={() => setOpenLogin(false)} />
      <LoginModal open={openSignup} handleClose={() => setOpenSignup(false)} />
    </div>
  );
};
const Top = (props) => {
  return (
    <React.Fragment>
      <div>
        <Button
          variant="outlined"
          className={classes.loginButton}
          onClick={props.onClickLogin}
        >
          Login
        </Button>
        <Button
          variant="outlined"
          className={classes.loginButton}
          onClick={props.onClickSignup}
        >
          Signup
        </Button>
      </div>
      <h1>Toppage</h1>
    </React.Fragment>
  );
};

编辑无价-sara-lvjnv

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Material-UI对话框模态中使用react-infinite-scroll-component?

如何设置材质UI对话框不同部分的CSS?

如何使用 Jquery UI 对话框调用 Bootstrap formValidation

如何在调度程序中使用Material-UI对话框?

如何在带有材质UI的对话框中显示降档建议?

如何使用样式化的组件来定位“材质UI对话框”的背景色属性?

修复对话框材质ui

如何在 Material-UI 中使图像略微偏离对话框

关闭对话框时更改页面地址(材质 ui、react-router)

使用材质 ui 的图库和对话框

如何在Jquery UI对话框中实现“确认”对话框?

如何从 React 对话框中的 material-ui TextFileds 获取值?

如何防止单击背景幕时关闭“材质UI对话框”?

如何在React的Material-UI中关闭另一个组件中的对话框?

单击确定按钮时,我们如何在材质 UI 对话框中传递数据

CKEditor 4在“材质UI”对话框中使用时出现问题

如何在 Material UI 中定位表单对话框?

如何在TortoiseGit中使用标准登录对话框而不是GitHub登录对话框?

如果输入在材质ui对话框中,则react-hook-form的setValue方法不起作用

如何在NativeScript对话框中使用DatePicker

如何在“对话框”中使用卡片

如何在对话框中使用 QnA 服务?

如何在jQuery对话框中使用ASP控件?

如何在对话框中使用属性集

如何在电子中使用文件对话框?

如何在MFC对话框中使用OnDraw

如何在弹出窗口中使用对话框?

如何使用FB.ui在Facebook Feed对话框的描述中包含链接?

如何使用ReactJS通过Material UI对话框提交表单