所以我一直在玩 Blazor WebAssembly,但我不知道如何解决这个问题。基本上,我有一个 NavMenu.razor 页面,它将从 JSON 文件异步获取 NavMenuItem 数组。这很好用。现在,我想要做的是向从<NavLink>下面的 foreach 循环中的标签生成的每个锚点添加一个事件侦听器。
该循环之外的 NavLink(异步函数未填充的那个)成功地正确应用了 addSmoothScrollingToNavLinks() 函数。其他 NavLink 没有。似乎它们还没有在 DOM 中。
我猜有一些奇怪的竞争条件,但我不知道如何解决它。关于我如何解决这个问题的任何想法?
导航菜单.razor
@inject HttpClient Http
@inject IJSRuntime jsRuntime
@if (navMenuItems == null)
{
<div></div>
}
else
{
@foreach (var navMenuItem in navMenuItems)
{
<NavLink class="nav-link" href="@navMenuItem.URL" Match="NavLinkMatch.All">
<div class="d-flex flex-column align-items-center">
<div>
<i class="@navMenuItem.CssClass fa-2x"></i>
</div>
<div class="mt-1">
<span>@navMenuItem.Text</span>
</div>
</div>
</NavLink>
}
}
<NavLink class="nav-link" href="#" Match="NavLinkMatch.All">
<div class="d-flex flex-column align-items-center">
This works!
</div>
</NavLink>
@code {
private …Run Code Online (Sandbox Code Playgroud)