在Blazor应用程序中,当我们在子组件中使用了参数并且想要在该参数变化时刷新子组件,我们可以使用以下方法:
@typeparam TItem
@if (Items != null) {
@code {
[Parameter]
public List
public class MyEventArgs : EventArgs { public string MyParameter { get; set; } }
public class MyComponent : ComponentBase, IHandle
[Parameter]
public string MyParameter
{
get { return _myParameter; }
set
{
if (_myParameter != value)
{
_myParameter = value;
NotifyParameterChanged();
}
}
}
private void NotifyParameterChanged()
{
var args = new MyEventArgs
{
MyParameter = MyParameter
};
EventAggregator.GetEvent().Publish(args);
}
public async Task HandleAsync(MyEventArgs args)
{
if (args.MyParameter == MyParameter)
{
StateHasChanged();
await Task.Delay(1);
}
}
}
在这个例子中,当 MyParameter 的值发生变化时,OnParameterChanged 会被调用,它会发布一个 MyEvent 事件,在应用程序中任何订阅该事件的地方都可以处理它,我们在子组件中处理该事件,并在处理函数中判断参数的值是否被更新,如果已更新则重新渲染子组件。