微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决反应虚拟化检测列表底部的滚动

我试图找出 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 举报,一经查实,本站将立刻删除。