在页面上的可滚动组件中反应InfiniteScroll

用户1

我正在尝试在div中建立一个具有固定高度并附加有滚动的无限滚动,因此我的目标是使窗口不移动,而是使其中的组件具有滚动,并无限增加其中的项目。

这是我到目前为止所拥有的:

import React, { useState } from "react";
import ReactDOM from "react-dom";
import InfiniteScroll from "react-infinite-scroll-component";

const style = {
  height: 18,
  border: "1px solid green",
  margin: 6,
  padding: 8
};

const DoseListCardBody = () => {
  const [items, setItems] = useState(Array.from({ length: 20 }));

  const fetchMoreData = () => {
    setItems(items.concat(Array.from({ length: 10 })));
  };

  return (
    <div style={{ height: "100%", overflowY: "scroll" }}>
      <InfiniteScroll
        dataLength={items.length}
        next={fetchMoreData}
        hasMore={items.length < 200}
        loader={<h4>Loading...</h4>}
      >
        {items.map((i, index) => (
          <div style={style} key={index}>
            div - #{index}
          </div>
        ))}
      </InfiniteScroll>
    </div>
  );
};

ReactDOM.render(
  <div style={{ height: "35rem", background: "black" }}>
    <div style={{ height: "30rem", background: "white" }}>
      <DoseListCardBody />
    </div>
  </div>,
  document.getElementById("root")
);

如果我改变一切都很好

ReactDOM.render(
  <div style={{ height: "35rem", background: "black" }}>
    <div style={{ height: "30rem", background: "white" }}>
      <DoseListCardBody />
    </div>
  </div>,
  document.getElementById("root")
);

ReactDOM.render(
  <DoseListCardBody />,
  document.getElementById("root")
);

我认为这是因为它使用的是窗口滚动而不是组件。

如何获得InfiniteScroll以使用父组件或具有指定滚动的组件。

我为不好的术语表示歉意,我通常不开发网页。

用户1

好的,我知道了!

必须将scrollableTarget用作InfiniteScroll中的道具,并指定具有滚动条的组件的ID。

例:

const DoseListCardBody = () => {
  const [items, setItems] = useState(Array.from({ length: 20 }));

  const fetchMoreData = () => {
    setItems(items.concat(Array.from({ length: 10 })));
  };

  return (
    <div id="scrollableDiv" style={{ height: "100%", overflowY: "scroll" }}>
      <InfiniteScroll
        dataLength={items.length}
        next={fetchMoreData}
        hasMore={items.length < 200}
        loader={<h4>Loading...</h4>}
        scrollableTarget="scrollableDiv"
      >
        {items.map((i, index) => (
          <div style={style} key={index}>
            div - #{index}
          </div>
        ))}
      </InfiniteScroll>
    </div>
  );
};

注意添加了'id =“ scrollableDiv”'和'scrollableTarget =“ scrollableDiv”'。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

可滚动的vaadin视图以显示页面中的所有组件

滚动到重新加载页面上的元素反应

在单独的页面上反应路由器渲染组件

在 React 页面上显示后如何滚动到组件?

当组件离页时反应整个页面滚动条

可重用反应组件中的 prop 类

可重用反应组件中的条件类

模式对话框中的可滚动表单(超过50行)比在其自己的页面上呈现的相同表单慢得多

语义ui使内容div可滚动但不能使整个页面可滚动?(流星+反应)

Flutter - 可滚动页面中的列表视图

Tkinter Notebook中的可滚动页面

防止使用可滚动组件在移动设备中滚动

反应,在页面上打印对象

反应页面上的 YouTube 视频

反应 useState/setState 错误:当组件的多个实例在同一页面上时不是函数

在同一页面上反应路由器渲染组件

链接到同一页面上的不同反应组件

在 Gatsby.js 中,特定页面上的组件的特定样式

在本机反应中需要可滚动的选项卡视图

在组件中反应组件

恢复无限滚动页面上的滚动位置

CSS for modal-如何将其放置在页面上方但在窗口中可滚动

我应该在页面上的每个组件中还是在父页面上为每个组件多次调用Axios?

拖动以在页面上移动组件?

React中Material-UI中的可滚动列表组件

反应中的可拖动组件未按预期工作

如何使功能组件中可维护的状态负载做出反应?

如何在单独的页面中呈现反应组件?

在反应中重新加载页面时子组件值重置