Blazor中如何继承MudTextField并覆写DebounceInterval?
继承MudTextField并固定DebounceInterval为300ms的解决方案
由于MudBlazor的ParameterStates机制会优先使用内部状态值而非直接赋值的属性,你之前在OnParametersSet中设置DebounceInterval = 300的方式会被基类的参数状态逻辑覆盖,导致无效。
不需要用嵌套组件的方式,直接通过重写SetParametersAsync方法,在基类处理参数前强制指定DebounceInterval的参数值即可:
@inherits MudTextField<T> @typeparam T @{ base.BuildRenderTree(__builder); } @code { public override async Task SetParametersAsync(ParameterView parameters) { // 强制将DebounceInterval参数设置为300,覆盖外部传入的值 var modifiedParameters = parameters.SetParameter(nameof(DebounceInterval), 300); await base.SetParametersAsync(modifiedParameters); } }
原理说明:
- MudBlazor的
ParameterState是在SetParametersAsync阶段初始化参数状态的,因此我们需要在基类处理参数之前,先修改传入的参数集合,把DebounceInterval固定为300。 ParameterView.SetParameter方法可以创建新的参数视图,替换指定参数的值,这样基类在处理参数状态时就会读取我们设置的300值,而非默认值或外部传入值。- 该方案完全继承原MudTextField的所有功能,仅强制覆盖DebounceInterval参数,符合需求。
内容的提问来源于stack exchange,提问作者Patrick01
相关产品推荐
相关产品推荐

