刷新后保持组件状态

Keeping state of component after refresh

您好,我想知道如何在不使用不同页面的情况下在 Blazor 中保持组件变量的状态。 假设我有一个 Parent 页面,其中有一个 Login 组件:

登录

 @functions()
   {
   public Action<string>onlogin{get;set;}  //some logic that triggers this event to the parent , ---not important
   }

主要

@if(this.id==string.Empty)
{
<Login onlogin="@((value)=>OnLoginEvent(value))"></Login>
}

@functions()
{
 public string id{get;set;}=string.Empty;
 public void OnLoginEvent(string value)
 {
   this.id=value;
 }

现在如您所见,我第一次呈现 Main 组件并登录时,id 将与 string.Empty 不同,因此 Login 组件将消失。 但是,如果我刷新页面,我仍然返回渲染的 login 组件,因此 id 被重置。

即使在刷新后,我能否以某种方式保持 Component 变量的状态?在这种情况下,即使在刷新后我也想保持 id 不成为 string.Empty

P.S 我不想使用不同的页面,我正在考虑将 id 的值存储在 service也就是injected.Is还有别的办法吗?

正如您得出的结论,服务将是解决您问题的好方法。但另一种选择是使用浏览器本地存储。这将以非常稳健的方式保留您的数据。您可以使用这样的库 BlazoredLocalStorage(完全公开,我是作者)。

不过,此方法会将数据保留在用户会话之外,因此,例如,用户可以关闭浏览器并在一天后返回,数据仍然存在。所以你必须管理它。但这就是许多 SPA 应用程序处理此问题的方式。