编写的材料UI组件是基于功能的组件吗?

时间:2020-02-10 06:01:17

标签: material-ui

我正在尝试将材料ui组件用于基于反应类的组件,而基于材料函数的演示都基于wrtten函数,但是我们编写的所有项目页面都是基于类的,很难集成材料UI组件

1 个答案:

答案 0 :(得分:1)

在基于类的组件上集成并不难。是的,在Material UI文档中,所有东西都通过使用Hooks集成在基于功能的组件上。但是您应该对钩子和状态概念有所了解,然后可以轻松地将它们集成在一起。 例如:

  export default function AlertDialog() {
  const [open, setOpen] = React.useState(false);

  const handleClickOpen = () => {
    setOpen(true);
  };

  const handleClose = () => {
    setOpen(false);
  };

  return (
    <div>
      <Button variant="outlined" color="primary" onClick={handleClickOpen}>
        Open alert dialog
      </Button>
      <Dialog
        open={open}
        onClose={handleClose}
        aria-labelledby="alert-dialog-title"
        aria-describedby="alert-dialog-description"
      >
        <DialogTitle id="alert-dialog-title">{"Use Google's location service?"}</DialogTitle>
        <DialogContent>
          <DialogContentText id="alert-dialog-description">
            Let Google help apps determine location. This means sending anonymous location 
         data to
            Google, even when no apps are running.
          </DialogContentText>
        </DialogContent>
        <DialogActions>
          <Button onClick={handleClose} color="primary">
            Disagree
          </Button>
          <Button onClick={handleClose} color="primary" autoFocus>
            Agree
          </Button>
        </DialogActions>
      </Dialog>
    </div>
  );
}

因此,此对话框代码已使用基于功能的组件编写,但我们可以轻松地将其集成到基于类的组件上,例如:


 export default  class  AlertDialog extends React.Components{
  constructor(){

 super(props)
this.state={
    open:false
    }
  }


  handleClickOpen = () => {
    this.setState({open:true})
  };

  handleClose = () => {
       this.setState({open:false})
  };
render(){
  return (
    <div>
      <Button variant="outlined" color="primary" onClick={handleClickOpen}>
        Open alert dialog
      </Button>
      <Dialog
        open={this.state.open}
        onClose={this.handleClose}
        aria-labelledby="alert-dialog-title"
        aria-describedby="alert-dialog-description"
      >
        <DialogTitle id="alert-dialog-title">{"Use Google's location service?"}</DialogTitle>
        <DialogContent>
          <DialogContentText id="alert-dialog-description">
            Let Google help apps determine location. This means sending anonymous location 
         data to
            Google, even when no apps are running.
          </DialogContentText>
        </DialogContent>
        <DialogActions>
          <Button onClick={this.handleClose} color="primary">
            Disagree
          </Button>
          <Button onClick={this.handleClose} color="primary" autoFocus>
            Agree
          </Button>
        </DialogActions>
      </Dialog>
    </div>
  );
}
}

因此,我们应该具备基本的React Concept知识,您可以做到这一点。