首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动滚动响应redux实现

自动滚动响应redux实现
EN

Stack Overflow用户
提问于 2020-02-21 04:37:46
回答 1查看 384关注 0票数 0

我正在为我的应用程序实现自动滚动选项。在下面的情况下,通道是从数据库获取的数据列表。我使用redux调用api。如何连接InfiniteScroll和通道列表以获得自动滚动功能?

代码语言:javascript
复制
 import React, { Fragment } from "react";
import { Grid } from "@material-ui/core";
import ChannelCard from "./Card";
import CreateChannel from "./Create";
import SimpleSelect from "./Filter";
import InfiniteScroll from "react-infinite-scroll-component";

const ChannelList = ( {channels: { channels}}) => {
  const [data, setData] = React.useState({
    items: Array.from({ length: 20 })
  });
  const { items } = data;
  const fetchMoreData = () => {
    // a fake async api call like which sends
    // 20 more records in 1.5 secs
    setTimeout(() => {
      setData({
        items: items.concat(Array.from({ length: 20 }))
      });
    }, 1500);
  };

  //view
  const view = (
    <Fragment>
      <Grid container>
        <Grid item xs={6} sm={6} md={10} lg={10} xl={10}></Grid>
        <Grid>
          <SimpleSelect />
        </Grid>
      </Grid>

        <Fragment>
          <InfiniteScroll
            dataLength={items.length}
            next={fetchMoreData}
            hasMore={true}
            loader={<h4>Loading...</h4>}
          >
            <Grid container>
              {channels.map(channel => (
                <Grid key={channel._id} item xs={6} sm={6} md={3} lg={2} xl={2}>
                  <ChannelCard
                    channel={channel}
                    isAuthenticated={isAuthenticated}
                  />
                </Grid>
              ))}
            </Grid>
          </InfiniteScroll>
        </Fragment>

    </Fragment>
  );

  return <Fragment>{view}</Fragment>;
};

export default ChannelList;

(我使用redux调用api。如何连接InfiniteScroll和通道列表以获得自动滚动功能?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-21 05:10:15

InfiniteScroll组件要求子组件是希望无限滚动的组件数组,因为您只有一个子组件--即Grid组件--它只为一个项执行它的工作,因此它无法工作:https://www.npmjs.com/package/react-infinite-scroll-component

只需删除包装网格组件

代码语言:javascript
复制
<InfiniteScroll
    dataLength={items.length}
    next={fetchMoreData}
    hasMore={true}
    loader={<h4>Loading...</h4>}
>
  {channels.map(channel => (
    <Grid key={channel._id} item xs={6} sm={6} md={3} lg={2} xl={2}>
      <ChannelCard
        channel={channel}
        isAuthenticated={isAuthenticated}
      />
    </Grid>
  ))}
</InfiniteScroll>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60332290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档