在Blazor Server中,由于客户端无法像在Blazor WebAssembly中那样与组件交互,因此使用回调是与组件通信的常见选项。
下面是一个简单的示例:
1.创建一个自定义组件MyComponent:
public class MyComponent : ComponentBase
{
[Parameter]
public string Message { get; set; }
public event Action OnClick;
private void ButtonClicked()
{
OnClick?.Invoke();
}
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
builder.OpenElement(0, "button");
builder.AddAttribute(1, "onclick", EventCallback.Factory.Create(this, ButtonClicked));
builder.AddContent(2, Message);
builder.CloseElement();
}
}
2.在父组件中使用MyComponent并添加回调:
public class ParentComponent : ComponentBase
{
private void DoSomething()
{
// do something
}
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
builder.OpenComponent(0);
builder.AddAttribute(1, "Message", "Click me!");
builder.AddAttribute(2, "OnClick", EventCallback.Factory.Create(this, DoSomething));
builder.CloseComponent();
}
}
在上面的示例中,当单击MyComponent中的按钮时,将触发回调并执行DoSomething方法。
这种方法可以让您在Blazor Server上使用组件并实现与它们的交互。