注意:Blazor 中的所有组件都是可重用的。
Blazor 中有两种类型的组件:可路由组件和不可路由组件。可路由组件也称为页面组件。他们使用 Razor @page 指令和路由模板进行注释,例如:
@page "/counter"
可路由组件是您可以使用 url 导航到的组件... 默认模板创建一个名为 Counter 的可路由组件,您可以通过单击导航栏中的计数器菜单项导航到它。 Counter 组件在这里扮演“页面”的角色。但是你也可以将它作为子组件嵌入到 Index 组件中,在这种情况下,Counter 组件被重用,并且作为子组件
感谢您的回答。我设法获得了一个可重复使用的剃须刀页面。快速提问。当我使用 wpf 执行此操作时,我使用 Tag 将数据发送到用户控件。我该如何使用 blazor 来代替?
您想要的是父组件与其子组件之间的数据绑定。以下是在默认 Blazor 模板中创建的 Counter 组件的代码:
Counter.razor
@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
下面描述了如何改变组件,以便它从要嵌入它的父组件中获取值。
我不想像这样定义一个局部变量:private int currentCount = 0;,我想从父组件传递一个数值给 Counter 组件...在这种情况下,我必须定义一个参数属性,它将获得传递的值:
[Parameter]
public int CurrentCount {get; set;};
所以现在您可以在您的 Counter 组件中使用传递的值。这就是您将 Counter 组件嵌入到索引组件中并为其传递值的方式:
Index.razor
@page "/"
<div>@value</div>
<Counter CurrentCount="value" />
@code
{
private int value = 100;
}