你好,我想知道如何在不使用不同页面的情况下保持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
中作为一种解决方案。还有其他方法吗?
答案 0 :(得分:1)
正如您所得出的结论,服务将是解决问题的好方法。但是另一个选择是使用浏览器的本地存储。这将以非常可靠的方式保留您的数据。您可以使用诸如BlazoredLocalStorage这样的库(完全公开,我是作者)。
尽管如此,该方法仍将数据保留在用户会话外部,因此,例如,用户可以关闭浏览器并在一天后返回并仍然存在数据。因此,您必须进行管理。但这是多少SPA应用程序可以处理此问题的。