using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Routing; using Microsoft.JSInterop; namespace Web.Core; public class FragmentNavigationBase : ComponentBase, IAsyncDisposable { private IJSObjectReference? module; [Inject] private NavigationManager NavigationManager { get; set; } = default!; [Inject] private IJSRuntime JSRuntime { get; set; } = default!; protected override void OnInitialized() { NavigationManager.LocationChanged += TryFragmentNavigation!; } protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { module = await JSRuntime.InvokeAsync<IJSObjectReference>("import", "./js/scrollto.js"); await NavigationManager.NavigateToFragmentAsync(module); } } private async void TryFragmentNavigation(object sender, LocationChangedEventArgs args) { await NavigationManager.NavigateToFragmentAsync(module); } async ValueTask IAsyncDisposable.DisposeAsync() { if (module is not null) { await module.DisposeAsync(); } NavigationManager.LocationChanged -= TryFragmentNavigation!; } }
You need to be a premium member to use this feature. To access it, you'll have to upgrade your membership.
Become a sharper developer and jumpstart your career.
$0
$
. 00
monthly
For Basic members:
$20
For Premium members:
$45
For Elite members: