尝试使用最新模板生成的解决方案。
- 拥有一个服务来保存字符串列表。
- 在 MainLayout.razor 和 NavMenu.razor 中注入服务
- 该服务具有简单的方法,即添加、删除、项目
- 在 MainLayout 中,使用 OnInitializedAsync() 添加一些项目,如下所示
.
protected override async Task OnInitializedAsync()
{
await Task.Run(() =>
{
this.svc.Add("string one");
this.svc.Add("string two");
});
await Task.Run(() => StateHasChanged());
}
在 NavMenu.razor 的 html 片段中,我很简单地尝试打印
@svc.Items.Count
使用上面的代码,我没有看到计数得到更新/刷新,我也可以在 MainLayout 中有另一个按钮处理程序来调用 svc.Add 方法,但计数没有得到更新。
只有当我尝试在 navMenu.razor 中有一些 btn 处理程序时,blazor 才会重新呈现自身
<button @onclick="SetCurrentTime"> Time </button>
<h4>@time</h4>
void SetCurrentTime()
{
time = DateTime.Now.ToLongTimeString();
}
这个问题的github repo:(点击AddString并且计数器应该增加)https://github.com/pkaushik23/mycodeshares/tree/master/CheckRefreshBlazor