抽屉没有打开

时间:2018-01-06 03:11:25

标签: reactjs material-design material-ui drawer

晚上好。我有一个问题,我认为很容易解决,但我无法得到它,因为我只是一个反应初学者。问题是我放在我的appbar中的抽屉没有打开,控制台上没有关于它的错误,所以我想得到你们的帮助。 PS:抱歉英语不好,我是巴西人。

import React from 'react';
import PropTypes from 'prop-types';
import { withStyles } from 'material-ui/styles';
import Drawer from 'material-ui/Drawer';
import AppBar from 'material-ui/AppBar';
import Button from 'material-ui/Button';
import IconButton from 'material-ui/IconButton';
import Toolbar from 'material-ui/Toolbar';
import MenuIcon from 'material-ui-icons/Menu';
import TextField from 'material-ui/TextField';
import Paper from 'material-ui/Paper';
import Grid from 'material-ui/Grid';
import '../assets/scss/main.scss';
import img from '../assets/images/react.png';

const styles = theme => ({
  root: {
    width: '100%',
  },
  flex: {
    flex: 1,
  },
  menuButton: {
    marginLeft: -12,
    marginRight: 20,
  },
  inputProps: {
    step: 300,
  },
  button: {
    margin: theme.spacing.unit,
  },
  input: {
    display: 'none',
  },
  paper: {
    padding: 50,
    textAlign: 'center',
    border: '5px solid black',
    width: '100%',
  },
  paper1: {
    backgroundColor: 'red',
    marginTop: '13%',
  },
  img: {
    width: '45%',
  },
  appbar: {
    marginLeft: '-20.20%',
    marginTop: '-20%',
    width: '139.99%',
  },
});


function ButtonAppBar(props) {
  const { classes } = props;
  const handleSubmit = (event) => {
    event.preventDefault();
    const data = {
      email: document.getElementById('email').value,
      password: document.getElementById('password').value,
    };
    console.log(data);
  };
  return (

    <div className={styles.root}>
      <Grid container spacing={8} alignItems="center" justify="center">
        <Paper className={classes.paper}>
        <div>
        <AppBar position="static" className={classes.appbar}>
        <Drawer />
          <Toolbar>
          <IconButton className={classes.menuButton} color="contrast" aria-label="Menu">
            <MenuIcon />
          </IconButton>
          </Toolbar>
      </AppBar>
      </div>
          <img src={img} alt="React" className={classes.img} /><br />
          <form onSubmit={handleSubmit} noValidate>
            <TextField id="email" type="email" label="Usuário" className={classes.user} /><br />
            <TextField id="password" type="password" label="Senha" className={classes.senha} />
            <div>
            <AppBar position="static" className={classes.paper1} >
              <Button type="submit" color="contrast">Login</Button>
            </AppBar>
            </div>
          </form>
        </Paper>
      </Grid>
    </div>
  );
}

ButtonAppBar.propTypes = {
  classes: PropTypes.object.isRequired,
};

export default withStyles(styles)(ButtonAppBar);

1 个答案:

答案 0 :(得分:1)

查看文档中的Drawer demos。您会看到Drawer使用open道具来指定它是否打开。在演示中,这是我的状态。

通常使用的方法是在AppBar中使用一个按钮,如IconButton,其中一个onClick处理程序会发出状态更改,从而导致重新渲染。

演示应该可以帮助您重新配置应用程序并开始滚动。使用组件状态打开和关闭抽屉的最简单示例是Responsive Drawer演示的移动部分。

它将状态初始化为false并使用open呈现this.state.mobileOpen道具。 AppBar有一个handleDrawerToggle的IconButton作为onClick处理程序,它改变状态,导致组件重新渲染。