我想无限滚动来获取任何项目,简短的步骤是:
1) 在屏幕末尾滚动。
2)使用redux更新items pageIndex。
3) 用于componentDidUpdate捕捉这个 redux 动作。
4) 将获取的项目附加到项目数组的末尾。
class InfiniteScroll extends React.Component {
componentDidMount() {
window.addEventListener("scroll", throttle(this.onScroll, 500), false);
}
componentWillUnmount() {
window.removeEventListener("scroll", this.onScroll, false);
}
componentDidUpdate(preProps) {
if (props.pageindex === preProps.pageindex + 1)
fetchItems(...);
}
onScroll = () => {
if (
window.innerHeight + window.scrollY >=
document.body.offsetHeight - 100
) {
updatePage(...);
}
};
render() {
return <Component {...this.props} />;
}
}
此代码的唯一问题是updatePage执行一次时,fetchItems无法立即执行。