You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor:如何实现子组件修改状态后父组件实时更新购物篮计数

实现Header组件实时响应购物篮状态变化

要让Header组件实时感知StateContainer的状态变化,按以下步骤修改即可:

1. 在Header组件中注入StateContainer并订阅状态变化事件

@inject StateContainer StateContainer
@implements IDisposable

<div>@StateContainer.basket.Count</div>

@code {
    protected override void OnInitialized()
    {
        // 订阅状态变更事件
        StateContainer.OnChange += HandleStateChange;
    }

    private void HandleStateChange()
    {
        // 通知组件重新渲染,更新UI显示
        StateHasChanged();
    }

    public void Dispose()
    {
        // 组件销毁时取消订阅,避免内存泄漏
        StateContainer.OnChange -= HandleStateChange;
    }
}

关键逻辑说明

  • 依赖注入:通过@inject指令获取已注册的Singleton实例,无需手动创建对象。
  • 事件订阅:在组件初始化阶段订阅OnChange事件,确保能监听购物篮的状态变更。
  • UI更新触发:当Dialog中调用NotifyStateChanged()触发事件时,执行StateHasChanged()通知Blazor重新渲染Header组件,展示最新的购物篮数量。
  • 内存泄漏防护:实现IDisposable接口,在组件销毁时移除事件订阅,避免无用的引用残留。

内容的提问来源于stack exchange,提问作者bilpor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:52:01