gpt4 book ai didi

Blazor 导航管理器返回?

转载 作者:行者123 更新时间:2023-12-03 15:34:51 26 4
gpt4 key购买 nike

在使用 blazor 时,我希望能够“返回”到我之前所在的页面。
我找到了这个 issue看起来这是一个死胡同?
这个功能太基础了,我不敢相信它不存在。
是否有任何走动可以使此“返回”功能?
请注意,我不能使用 window.goBackhistory.goBack因为我的应用程序不会创建任何历史记录,也不应该创建任何历史记录。
“创建”历史的唯一方法是使用 forceLoad Navigation.NavigateTo 的选项但如果我这样做,它会尝试再次加载我的整个应用程序,这很慢,我不想。

最佳答案

你需要的是一个页面历史状态管理器:
对于以下示例,我使用的是 Blazor Wasm,但您也可以在 Blazor Server 中使用此示例。
在客户端应用程序中,我添加了这个类:
页面历史状态:

 public class PageHistoryState    {        private List<string> previousPages;        public PageHistoryState()        {            previousPages = new List<string>();        }        public void AddPageToHistory(string pageName)        {            previousPages.Add(pageName);        }        public string GetGoBackPage()        {            if (previousPages.Count > 1)            {                // You add a page on initialization, so you need to return the 2nd from the last                return previousPages.ElementAt(previousPages.Count - 2);            }            // Can't go back because you didn't navigate enough            return previousPages.FirstOrDefault();        }        public bool CanGoBack()        {            return previousPages.Count > 1;        }    }

Then add this class to the services as a singleton:

builder.Services.AddSingleton<PageHistoryState>();

Inject it in your pages:

@inject WasmBlazor.Client.PageHistoryState PageHistoryState
在我的标记中,我检查了是否可以返回页面:
@if (PageHistoryState.CanGoBack())
{
返回
}

我已经覆盖了 OnInitialized()
protected override void OnInitialized()
{
PageHistoryState.AddPageToHistory("/counter");
base.OnInitialized();
}

我在“获取数据”页面中做了同样的事情,我可以在不需要 JSInterop 的情况下返回。

关于Blazor 导航管理器返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62561926/

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