代码之家  ›  专栏  ›  技术社区  ›  Pfeffer

Blazor实时UI更新变体

  •  0
  • Pfeffer  · 技术社区  · 2 年前

    我对blazor很陌生,无法找到以下主题的正确答案:

    用例: blazor服务器应用程序读取传感器值并将其显示在UI上。 当传感器值发生变化时,应更新UI。

    找到的解决方案:

    a) 当传感器值发生变化时,使用SignalR Hub更新UI

    剃须刀组件:

        protected override async Task OnInitializedAsync()
        {
            sensorServiceHub= new HubConnectionBuilder()
                .WithUrl(NavigationManager.ToAbsoluteUri("/sensorServiceHub"))
                .Build();
            sensorServiceHub.On("changed", () =>
            {
                StateHasChanged();
            });
            await sensorServiceHub.StartAsync();
        }
    

    b) 传感器值是一个具有操作委托的属性,该操作委托在更改时被调用。在UI组件中,我们向该委托添加一个方法来更新它。

    剃须刀组件:

        protected override async Task OnInitializedAsync()
        {
            SensorService.OnValueChanged += () =>
            {
                InvokeAsync(this.StateHasChanged);
            };
        }
    

    问题 我什么时候应该使用哪种解决方案?或者还有其他解决方案吗? 我尝试了两种变体,都奏效了。是否存在性能差异? 很抱歉,如果问题太基本。。。

    0 回复  |  直到 2 年前