Код: Выделить всё
public class BreadcrumbService
{
private List
_breadcrumbItems = new List
();
public List
BreadcrumbItems
{
get => _breadcrumbItems;
set
{
_breadcrumbItems = value;
NotifyStateChanged();
}
}
public event Func? OnBreadcrumbsChanged;
public void SetBreadcrumbs(IEnumerable
? items)
{
_breadcrumbItems = items?.ToList() ?? new List
();
NotifyStateChanged();
}
private void NotifyStateChanged() => OnBreadcrumbsChanged?.Invoke();
}
< /code>
И я вводил хлебные крошки в Mainlayout как таковой: < /p>
@Body
protected override async Task OnInitializedAsync()
{
BreadcrumbService.OnBreadcrumbsChanged += BreadcrumbsService_OnChange;
}
public void Dispose()
{
BreadcrumbService.OnBreadcrumbsChanged -= BreadcrumbsService_OnChange;
}
private async Task BreadcrumbsService_OnChange()
{
Breadcrumbs = BreadcrumbService.BreadcrumbItems;
await InvokeAsync(StateHasChanged);
}
< /code>
И, наконец, я использую его как таковой: < /p>
@inject BreadcrumbService BreadcrumbService
protected override async Task OnInitializedAsync()
{
BreadcrumbService.SetBreadcrumbs(new List
{
new BreadcrumbItem("Home", href: "/", icon: Icons.Material.Filled.Home)
});
StateHasChanged();
}
.
.
.
// In other component
BreadcrumbService.SetBreadcrumbs(new List
{
new BreadcrumbItem("Home", href: "/", icon: Icons.Material.Filled.Home),
new BreadcrumbItem("Blogs", href: "/blogs"),
new BreadcrumbItem($"Blog {Id}", href: $"/blogs/{ChapId}")
});
< /code>
Моя проблема заключается в том, что для обновления хлебных крошек требуется два щелчка, и их поведение не детерминированно, не могли бы вы помочь мне исправить эту ошибку, чтобы она обновляла хлебные крошки на инициализированных компоненте ?
Подробнее здесь: https://stackoverflow.com/questions/794 ... -in-blazor
Мобильная версия