首页 > 解决方案 > 刷新后保持组件状态

问题描述

您好,我想知道如何在不使用不同页面的情况下在 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

PS我不想使用不同的页面,我想作为一种解决方案来存储注入的值。id还有service其他方法吗?

标签: c#refreshstateblazor

解决方案


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

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


推荐阅读