经过一些研究,我发现了一个带有滚动条的东西 pageOnChangeprops:
我只找到了使用 React 类组件的实现示例,所以我假设您的组件是类类型。
首先,我创建了一个状态对象,例如:
this.state = {
currentPage: 1,
isFooterVisble: false
};
并制作了一个函数,将在更改事件时设置页面上的状态:
pageOnChange = (number) => {
this.setState({
currentPage: number,
isFooterVisble: number === 6 // 6 equals to the last component number
});
};
并将此函数添加到 pageOnChange={this.pageOnChange} 的ReactPageScroller:
<ReactPageScroller
ref={(c) => (this._pageScroller = c)}
pageOnChange={this.pageOnChange}
>
为了渲染页脚组件,我使用this.state.isFooterVisble 的条件渲染,如下所示:
<>
<ReactPageScroller
ref={(c) => (this._pageScroller = c)}
pageOnChange={this.pageOnChange}
>
<Comp title={"PAGE 1"} />
<Comp title={"PAGE 2"} />
<Comp title={"PAGE 3"} />
<Comp title={"PAGE 4"} />
<Comp title={"PAGE 5"} />
<Comp title={"PAGE 6"} />
</ReactPageScroller>
{this.state.isFooterVisble && <Footer />}
</>
并在全局 css 文件中添加:
html {
overflow: hidden;
width: 100%;
}
body {
height: 100%;
position: fixed;
/* prevent overscroll bounce*/
background-color: lightgreen;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
}
这里是完整的组件代码:
import React from "react";
import ReactPageScroller from "react-page-scroller";
import Comp from "./component";
import Footer from "./footer";
export default class Scroller extends React.Component {
constructor(props) {
super(props);
this.state = {
currentPage: 1,
isFooterVisble: false
};
this._pageScroller = null;
}
goToPage = (eventKey) => {
this._pageScroller.goToPage(eventKey);
};
pageOnChange = (number) => {
this.setState({
currentPage: number,
isFooterVisble: number === 6
});
};
render() {
return (
<>
<ReactPageScroller
ref={(c) => (this._pageScroller = c)}
pageOnChange={this.pageOnChange}
>
<Comp title={"PAGE 1"} />
<Comp title={"PAGE 2"} />
<Comp title={"PAGE 3"} />
<Comp title={"PAGE 4"} />
<Comp title={"PAGE 5"} />
<Comp title={"PAGE 6"} />
</ReactPageScroller>
{this.state.isFooterVisble && <Footer />}
</>
);
}
}