如何使用 Reactjs Material-UI 滚动时自动隐藏 AppBar

Mow*_*zer 3 scroll reactjs material-design material-ui

如何<AppBar/>在滚动时自动隐藏我的 Reactjs 组件,如图 1 所示?

图。1。<AppBar/>滚动时自动隐藏

在此输入图像描述

我正在使用 Material-UI,我的代码如下。

MyAppBar.js
import React from 'react';
import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';
import AppBar from '@material-ui/core/AppBar';
import Toolbar from '@material-ui/core/Toolbar';
import Typography from '@material-ui/core/Typography';
import Button from '@material-ui/core/Button';
import IconButton from '@material-ui/core/IconButton';
import MenuIcon from '@material-ui/icons/Menu';

const styles = {
  root: {
    flexGrow: 1,
  },
  grow: {
    flexGrow: 1,
  },
  menuButton: {
    marginLeft: -12,
    marginRight: 20,
  },
};

function ButtonAppBar(props) {
  const { classes } = props;
  return (
    <div className={classes.root}>
      <AppBar position="static">
        <Toolbar>
          <IconButton className={classes.menuButton} color="inherit" aria-label="Menu">
            <MenuIcon />
          </IconButton>
          <Typography variant="h6" color="inherit" className={classes.grow}>
            News
          </Typography>
          <Button color="inherit">Login</Button>
        </Toolbar>
      </AppBar>
    </div>
  );
}

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

export default withStyles(styles)(ButtonAppBar);
Run Code Online (Sandbox Code Playgroud)

95f*_*973 7

您可以SlideuseScrollTrigger

这里的要点是,当您向下滚动并且窗口垂直滚动条位置达到某个阈值(默认情况下距原点的像素)时,useScrollTrigger将(默认情况下)返回- 当您向上滚动时,它将返回。因此,这些就是我们否定它的理由true100falseinSlide

export default function HideAppBar() {
  const trigger = useScrollTrigger();

  return (
    <>        
      <Slide appear={false} direction="down" in={!trigger}>
        <AppBar>
          <Toolbar>
            <Typography variant="h6">Scroll Down to Hide App Bar</Typography>
          </Toolbar>
        </AppBar>
      </Slide>    
      ...
    </>
  );
}
Run Code Online (Sandbox Code Playgroud)

编辑材质演示(分叉)

您可以使用我在本答案顶部提供的有关useScrollTrigger自定义选项的链接,例如threshold

参考: https: //material-ui.com/components/app-bar/#hide-app-bar