如何解决如何在页面重新加载时在blazor Web程序集中的单例状态容器中保存值
我练习和学习blazor web assembly
。我正在学习组件之间进行通信的方式。一种这样的方法是使用状态容器。这可以按预期工作,但不能保持页面刷新的价值。
这是我的状态容器类,
AppState
:
public class AppState
{
public string SomeText { get; set; }
}
我已将其注册为Singleton
中的Program.cs
实例
builder.Services.AddSingleton<AppState>();
使用此设置,我可以在多个组件中@inject AppState
并共享值,就像可以在一个组件中进行设置并在另一个组件中进行获取一样。一切顺利。刷新后,我丢失了SomeText
属性中的值。
进一步搜索之后,我从article - Service Lifetimes in Blazor中注意到,
Blazor仅在客户端上运行,并刷新整页或 在新标签页中打开应用会创建一个新的 应用。
但是是否有任何解决方法或解决方案来保留该价值?我只想到浏览器localstorage
。我做对了吗?请提出您的建议,如果我错了,请纠正我?
解决方法
重新加载页面相当于关闭应用程序并重新启动它,内存中的所有内容都消失了。
我自己没有使用过它,但是我听说@chrissainty的Blazored / localstorage很好。但是问题在于,您会遇到多个选项卡,将状态设置为冲突值。
因此,您要么需要进行选项卡间通信,要么可以通过事件完成 Communication between tabs or windows
不过,如果可能的话,请使用客户端作为用户界面,并使客户端与服务器(然后与数据库)通信以保持持久性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。