gpt4 book ai didi

blazor - 在每个页面导航上执行 blazor header OnInitialized

转载 作者:行者123 更新时间:2023-12-04 15:22:16 25 4
gpt4 key购买 nike

我有一个 Blazor 服务器端应用程序。它对所有页面都有一个共同的标题。在 header 的 OnInitialized 内部,它检查用户是否有任何新消息。如果是这样,它会闪烁一个图标。这段代码当然会在网站加载时执行一次。但是,对于每次后续导航到不同的页面,它不会再次执行。

有没有办法在用户每次导航到任何页面时重新执行此操作?我知道我也可以在后台使用计时器来执行此操作,但想知道是否仅通过页面导航就可以做到这一点?

谢谢!

最佳答案

您有 2 个选项,它们应该可以在服务器端和客户端工作。

  1. 根据 Blazor docs您可以订阅 LocationChanged 事件。您可以在任何可以获得 NavigationManager 引用的地方执行此操作。

The following component handles a location changed event by subscribing to NavigationManager.LocationChanged.

  1. 您可以在 MainLayout.razor 页面上覆盖 OnAfterRenderAsync Blazor 方法。 因为这是一个共享的布局组件,所以它会在每次 App 导航时呈现。您甚至可以@inject NavigationManager _navigationManager 来检查呈现的页面。

选项 2 的代码示例:

@inject NavigationManager _navigationManager
@code {
protected override async Task OnAfterRenderAsync(bool firstRender)
{
var url = _navigationManager.Uri;
//write you code here...
}
}

可能选项 2 是最佳使用方式,因为您的代码将在呈现的 UI 上运行,因此您可以更改元素。

关于blazor - 在每个页面导航上执行 blazor header OnInitialized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63054542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com