刷新后保持组件状态

时间:2019-01-28 08:03:16

标签: c# refresh state blazor

你好,我想知道如何在不使用不同页面的情况下保持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不同,因此{{1} }组件将消失。 但是,如果刷新页面,我仍然会返回Login组件,因此login会被重置。

即使刷新后,我还能以某种方式保持id变量的状态吗?在这种情况下,即使刷新后,我也想保持Component不受id的影响吗?

PS 我不想使用其他页面,并且我正在考虑将string.Empty的值存储在注入的id中作为一种解决方案。还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

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

尽管如此,该方法仍将数据保留在用户会话外部,因此,例如,用户可以关闭浏览器并在一天后返回并仍然存在数据。因此,您必须进行管理。但这是多少SPA应用程序可以处理此问题的。