我在 Blazor 中开发了一些组件。全部都是继承自
BaseComponent
。
public abstract class BaseComponent : ComponentBase
{
[Parameter]
public bool Visible { get; set; } = true;
// Other properties ....
}
Visible
属性应控制是否应渲染派生组件。
我希望所有派生组件都具有明显的功能(而不是在所有组件中编写
if
块。
如何防止组件在基础组件中渲染?
您需要:
StateHasChanged
渲染组件你可以这样做:
public abstract class BaseComponent : ComponentBase
{
[Parameter] public bool Visible { get; set; } = true;
// Prevents rendering from the parent
public override Task SetParametersAsync(ParameterView parameters)
{
parameters.SetParameterProperties(this);
if (this.Visible)
return base.SetParametersAsync(ParameterView.Empty);
return Task.CompletedTask;
}
// Prevents rendering if StateHasChanged is called
protected override bool ShouldRender()
{
return this.Visible;
}
}