加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘南站长网 (https://www.0941zz.com/)- 科技、行业物联网、开发、云计算、云管理!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何在页面重新加载时在blazor Web程序集中的单例状态容器中保存

发布时间:2023-02-17 09:07:25 所属栏目:asp.Net 来源:互联网
导读:如何解决如何在页面重新加载时在blazor Web程序集中的单例状态容器中保存值? 我练习和学习blazor web assembly。我正在学习组件之间进行通信的方式。一种这样的方法是使用状态容器。这可以按预期工作,但不能保持页面刷新的价值。 这是我的状态容器类, App
  如何解决如何在页面重新加载时在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
 
  不过,如果可能的话,请使用客户端作为用户界面,并使客户端与服务器(然后与数据库)通信以保持持久性。

(编辑:甘南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读