SuperAPI AI 工具集

coordinate-components

通用与其它

查看项目

更新于 10-16 00:04

技能介绍

用途:在 Blazor 组件之间共享状态,尤其是没有直接父子参数关系的组件。

主要能力与选择依据:子树内(同一渲染模式)用 CascadingValue;跨渲染模式的全应用状态用经 DI 注册的 CascadingValueSource<T>;同一 circuit 内的可变共享状态用 Scoped 服务加 Action 事件。父传子一层用 [Parameter]/EventCallback。

用法要点:CascadingValue 按类型匹配,同名类型需加 Name;值不变时设 IsFixed="true"。CascadingValueSource<T> 在 Program.cs 用 builder.Services.AddCascadingValue(...) 注册,isFixed: false;子组件用 [CascadingParameter] 消费;更新须注入并调用 NotifyChangedAsync(newValue),不能靠页面刷新。Scoped 服务以 builder.Services.AddScoped<T>() 注册,组件订阅事件并在 Dispose 中退订;后台线程触发时用 InvokeAsync 包裹 StateHasChanged。

适用场景:主题、布局配置、当前用户、功能开关、购物车、通知计数、选中筛选条件。

限制:CascadingValue 不跨渲染模式边界;NotifyChangedAsync 会重渲染所有订阅者,类型应细分;Server 上每用户状态不可用 Singleton;Auto/WebAssembly 需在服务端与 .Client 两处注册且类型置于共享程序集;预渲染状态不自动延续。