刷新后保持组件状态
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 应用程序处理此问题的方式。
您好,我想知道如何在不使用不同页面的情况下在 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 应用程序处理此问题的方式。