我练习和学习blazor web assembly
。我正在学习组件之间通信的方法。一种这样的方法是使用状态容器。这按预期工作,但它不能维持页面刷新的价值。
这是我的状态容器类,
AppState
:
public class AppState
{
public string SomeText { get; set; }
}
我已将其注册为Singleton
实例在Program.cs
builder.Services.AddSingleton<AppState>();
通过这个设置,我能够@inject AppState
在多个组件中并共享该值,就像我可以在一个组件中设置它并在另一个组件中获取它一样。一切顺利。当我刷新时,我失去了价值SomeText
财产。
经过进一步谷歌搜索后,我注意到了这一点文章 - Blazor 中的服务生命周期 https://chrissainty.com/service-lifetimes-in-blazor/ that,
Blazor 仅在客户端上运行并且全页刷新或
在新选项卡中打开应用程序会创建一个新实例
应用。
但是有什么解决方法或解决方案可以保留价值吗?我只想到浏览器localstorage
。我做的对吗?如果我错了,请您提出建议并纠正我?
重新加载页面相当于关闭应用程序并重新启动它,内存中的任何内容都会消失。
我自己没有使用过它,但我听说 @chrissainty 的 Blazored/localstorage 很好。但问题是,您将有多个选项卡争相将状态设置为冲突的值。
因此,您要么需要选项卡间通信,这可以通过事件来完成选项卡或窗口之间的通信 https://stackoverflow.com/questions/28230845/communication-between-tabs-or-windows
如果可能的话,请使用客户端作为 UI 并让它与服务器(然后与数据库)通信以实现持久性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)