如何在页面重载时在blazor web程序集中的singleton状态容器中持久化值



我练习和学习blazor web assembly。我正在学习组件之间的通信方式。其中一种方法是使用状态容器。这可以按预期工作,但它不能在页面刷新时保持值。

这是我的状态容器类

AppState:

public class AppState
{
public string SomeText { get; set; }
}

我已在Program.cs中将其注册为Singleton实例

builder.Services.AddSingleton<AppState>();

有了这个设置,我可以在多个组件中@inject AppState并共享值,就像我可以在一个组件中设置它并在另一个组件获得它一样。一切顺利。刷新时,丢失了SomeText属性中的值。

经过进一步的谷歌搜索,我从这篇文章中注意到,

Blazor仅在客户端上运行,并且整个页面刷新或在新选项卡中打开应用程序会创建应用

但是有什么变通方法或解决方案可以保留价值吗?我脑海中浮现的只是浏览器localstorage。我做得对吗?如果我错了,请你提出建议并纠正我?

重新加载页面相当于关闭应用程序并重新启动它,内存中的任何东西都会消失。

我自己没有用过,但我听说@chrissainty的Blazored/localstorage很好。但问题是,你会有多个选项卡为将状态设置为冲突的值而斗争。

因此,您要么需要选项卡间的通信,这可以通过事件来完成选项卡或窗口之间的通信

如果可能的话,使用您的客户端作为UI,并让它与服务器通信(然后与数据库通信(以实现持久性。

相关内容

  • 没有找到相关文章

最新更新