反应虚拟化检测列表底部的滚动

问题描述

我试图找出 List 组件何时在滚动时到达底部。滚动事件在开始时仅触发一次,之后它再也不会调用。如何检测滚动到达列表底部或最后一项。

const onScroll = (event) => {
        console.log(event);
        console.log("called");
    }

    return (
        <Box className={classes.root}>

            {((products && products.length > 0) || loadingProducts) && (
                
                <LzCard
                    onscroll={onScroll}
                    style={{height: '100%'}}
                    showShadow={false}
                    loading={loadingProducts}                    
                >
                    <Box classes={classes.scrollBox}>
                        
                        <InfiniteLoader
                            isRowLoaded={({ index }) => {
                                return !!products[index];
                            }}
                            loadMoreRows={({ startIndex,stopIndex }) => {
                                return Promise.resolve();
                            }}
                            rowCount={100000}
                            threshold={15}
                        >
                            {({ onRowsRendered,registerChild }) => (
                                <AutoSizer disableHeight>
                                    {({ width }) => (
                                        <div>
                                            <List
                                                onScroll={onScroll}
                                                ref={registerChild}
                                                rowCount={products.length}
                                                height={products.length * 100}
                                                width={width}
                                                rowHeight={100}
                                                onRowsRendered={onRowsRendered}
                                                roWrenderer={ProductRow}
                                            />                  
                                        </div>                                  
                                    )}
                                </AutoSizer>
                            )}

                        </InfiniteLoader>

                        <BottomScrollListener onBottom={bottomScrollCallback} />

                    </Box>
                
                </LzCard>
            )}

                {isLoadingMore && (
                    <Box display="flex" justifyContent="center" mt={0} mb={0}>
                        <CircularProgress size={24} />
                    </Box>
                )}

                {showMoreOptionsPopover && (
                    <LzActionsPopover
                        open={showMoreOptionsPopover}
                        anchorEl={moreOptionsAnchor}
                        width={255}                        
                        onClose={handleMoreOptionsPopoverClose}
                        actions={[
                            new LzPopoverAction(
                                'View product page',LzPopoverActionType.Default,'view'
                            )
                        ]}
                        onActionClicked={handlePopoverActionClicked}
                    />
                )}

        </Box>
    );

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)