Blazor中的Sibling组件之间通信,可以通过使用EventCallback和Cascading参数来实现。
首先,我们需要创建一个CascadingValue组件,并将要共享的数据传递给它。在下面的示例中,我们要在Sibling1组件中与Sibling2组件共享一个字符串变量。
@code {
private string SharedValue = "Hello, Blazor!";
}
接下来,我们在Sibling1组件中通过EventCallback将更改后的数据返回给Cascading Value组件。Sibling2组件也会自动更新。
@code {
[CascadingParameter] private string SharedValue { get; set; }
[Parameter] public EventCallback SharedValueChanged { get; set; }
private async Task UpdateSharedValue()
{
SharedValue = "Hello, Blazor! (updated)";
await SharedValueChanged.InvokeAsync(SharedValue);
}
}
接下来,我们在Sibling2中可以通过CascadingValue组件来访问共享的值。
@implements IDisposable
@SharedValue
@code {
[CascadingParameter] private string SharedValue { get; set; }
protected override void OnInitialized()
{
Console.WriteLine("Sibling2 initialized");
base.OnInitialized();
}
public void Dispose()
{
Console.WriteLine("Sibling2 disposed");
}
}
关键点:
这是一种简单且有效的方式来在Blazor中实现Sibling组件之间的通信。