浏览代码

fix #2168 When auto-hide is off, the header is displayed.

陈帅 7 年之前
父节点
当前提交
08a596027e
共有 1 个文件被更改,包括 13 次插入6 次删除
  1. 13 6
      src/layouts/Header.js

+ 13 - 6
src/layouts/Header.js

@@ -15,6 +15,15 @@ class HeaderView extends PureComponent {
     visible: true,
   };
 
+  static getDerivedStateFromProps(props, state) {
+    if (!props.autoHideHeader && !state.visible) {
+      return {
+        visible: true,
+      };
+    }
+    return null;
+  }
+
   componentDidMount() {
     document.addEventListener('scroll', this.handScroll, { passive: true });
   }
@@ -87,12 +96,12 @@ class HeaderView extends PureComponent {
           this.scrollTop = scrollTop;
           return;
         }
-        if (scrollTop > 400 && visible) {
+        if (scrollTop > 300 && visible) {
           this.setState({
             visible: false,
           });
         }
-        if (scrollTop < 400 && !visible) {
+        if (scrollTop < 300 && !visible) {
           this.setState({
             visible: true,
           });
@@ -109,11 +118,9 @@ class HeaderView extends PureComponent {
     const { navTheme, layout, fixedHeader } = setting;
     const { visible } = this.state;
     const isTop = layout === 'topmenu';
+    const width = this.getHeadWidth();
     const HeaderDom = visible ? (
-      <Header
-        style={{ padding: 0, width: this.getHeadWidth() }}
-        className={fixedHeader ? styles.fixedHeader : ''}
-      >
+      <Header style={{ padding: 0, width }} className={fixedHeader ? styles.fixedHeader : ''}>
         {isTop && !isMobile ? (
           <TopNavHeader
             theme={navTheme}