c# - 刷新后保持组件状态
问题描述
您好,我想知道如何在不使用不同页面的情况下在 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
其他方法吗?
解决方案
正如您所得出的结论,服务将是解决您的问题的好方法。但另一种选择是使用浏览器本地存储。这将以一种非常健壮的方式保存您的数据。您可以使用诸如BlazoredLocalStorage 之类的库(完全公开,我是作者)。
但是,此方法会将数据保留在用户会话之外,因此,例如,用户可以关闭浏览器并在一天后返回,并且数据仍然存在。所以你必须管理它。但这就是处理这个问题的 SPA 应用程序的数量。
推荐阅读
- c# - WCF 获取请求响应
- maven - 升级到5.0.0时无法生成QueryDSL的QClass(com.querydsl.sql.Configuration未注册)
- java - Intellij:有没有办法在“外部库”下拉列表中显示更多依赖信息
- arrays - Matlab 数组划分
- r - 将日期时间数组中的年份更改为当前年份
- flutter - 在颤动中从套接字返回一个值
- java - 无法解析所有配置文件,Transform 的输入文件不存在
- image - MATLAB中imresize输出的图像宽度不一致
- python - Python:“NoneType”对象没有属性“文本”,XML 解析
- compiler-errors - 不支持设计单元跨入文件