Blazor虚拟化组件和拖动滚动条时出现的滚动问题。
创始人
2024-12-22 03:00:11
0

我们可以使用 Blazor 的 Virtualize 组件,来优化长列表或数据集的性能。然而,当我们在拖动滚动条时,可能会出现滚动出现异常的问题。这可能是因为 Blazor 的 Virtualize 组件在滚动时会发生滚动事件冲突。

为了解决这个问题,我们可以修改 Virtualize 组件的代码,添加一个判断条件,以便在拖动滚动条时不会触发 Virtualize 组件的滚动事件。我们可以通过以下代码实现:


    
        ... 
    


@code{
    private bool isScrolling = false;
    private string scrollSensitiveAreaClass = "scroll-sensitive-area-" + Guid.NewGuid().ToString();
    private List items = new List { ... };

    private async Task HandleScroll(ScrollEventArgs e)
    {
        if (!isScrolling)
        {
            var rootRect = await JSRuntime.InvokeAsync("getBoundingClientRect", scrollSensitiveAreaClass);
            if (e.Direction == ScrollDirection.Vertical && (e.ScrollTop < rootRect.Top || e.ScrollTop + rootRect.Height > rootRect.Bottom))
            {
                isScrolling = true;
                await JSRuntime.InvokeVoidAsync("requestAnimationFrame", async () =>
                {
                    isScrolling = false;
                    await InvokeAsync(StateHasChanged);
                });
            }
        }
    }
}

这段代码中,我们添加了一个名为 scrollSensitiveAreaClass 的属性,用于设置滚动敏感区域的类名。然后,在 Virtualize 组件上为 scrollSensitiveAreaClass 类名创建了一个 DOM 元素,作为滚动敏感区域。最后,在滚动事件处理程序中添加了一个判断条件,以便在拖动

相关内容

热门资讯

线上(wepoke真的)原来是... 线上(wepoke真的)原来是真的有挂!其实真的有挂(2022已更新)(哔哩哔哩);亲,其实确实真的...
两教程(Wepoke程序)软件... 两教程(Wepoke程序)软件透明挂辅助工具(软件透明挂)透视辅助(2024已更新)(哔哩哔哩);致...
软件(wepoke透明)原来是... 软件(wepoke透明)原来是真的有挂!其实真的有挂(2020已更新)(哔哩哔哩)是一款可以让一直输...
一模拟器(德扑工具)外挂辅助工... 一模拟器(德扑工具)外挂辅助工具(透视)透视辅助(2025已更新)(哔哩哔哩);亲真的是有正版授权,...
系统(aapoker讲解)竟然... 系统(aapoker讲解)竟然真的有挂!其实真的有挂(2021已更新)(哔哩哔哩);aapoker讲...
6系统(aapoker下载)外... 6系统(aapoker下载)外挂辅助工具(辅助挂)透视辅助(2023已更新)(哔哩哔哩)aapoke...
智能(德扑之星刷数据)果真真的... 智能(德扑之星刷数据)果真真的有挂!原来真的有挂(2025已更新)(哔哩哔哩);《WPK辅助透视》‌...
1机器人(德州nzt软件)软件... 1机器人(德州nzt软件)软件透明挂辅助软件(透视)透视辅助(2022已更新)(哔哩哔哩);人气非常...
ai代打(德扑之星决策)确实是... ai代打(德扑之星决策)确实是真的有挂!原来真的有挂(2020已更新)(哔哩哔哩);科技详细教程小薇...
第8透明(wepoke数据)外... 第8透明(wepoke数据)外挂透明挂辅助神器(辅助挂)透视辅助(2023已更新)(哔哩哔哩);原来...