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

2024-03-21

我练习和学习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(使用前将#替换为@)

如何在页面重新加载时将值保留在 blazor Web 程序集中的单例状态容器中 的相关文章

  • 为什么 F# 的默认集合是排序的,而 C# 的不是?

    当从 C 世界迁移到 F 最惯用的可能 思维方式时 我发现了这个有趣的差异 在 C 的 OOP mutable 世界中 默认的集合集合似乎是HashSet https learn microsoft com en us dotnet api
  • 有没有办法在 xcode 上使用 c++0x ?我想使用 gcc 4.4 或更高版本

    我想使用 gcc 4 4 或更高版本进行 iphone 开发 有人知道怎么做吗 不 你不知道 相信我 你不会 Apple 仍保留 gcc 4 2 1 因为 4 2 2 及更高版本使用 GPLv3 这意味着他们必须放弃对其平台的控制 对于 i
  • 从代码中,如何创建对存储在附加属性中的对象的属性的绑定?

    我们有一个继承的附加属性来存储一个对象 在可视化树的更下方 我们希望从代码绑定到该对象的属性 通常我们像这样构建绑定的路径部分 var someBinding new Binding Path new PropertyPath Attach
  • 从模板切换传递的类型

    在 C 中是否可以检查传递给模板函数的类型 例如 template
  • C# 开源 NMEA 解析器 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 C 开源 NMEA 解析器 嗯 我自己也不熟悉 但是一些快速搜索显示了一个代码项目 htt
  • 使用查询表达式对 List 进行排序

    我在使用 Linq 订购这样的结构时遇到问题 public class Person public int ID get set public List
  • 使用 dotnet pack 包含所有依赖项

    有什么办法可以强制dotnet pack包含所有引用的程序集 project json 中的所有依赖项 我相信这是相关的 https github com dotnet cli issues 1290 https github com do
  • 根据对象变量搜索对象列表

    我有一个对象列表 这些对象具有三个变量 ID 名称和值 这个列表中可能有很多对象 我需要根据ID或Name找到一个对象 并更改值 例子 class objec public string Name public int UID public
  • 析构函数中的异步操作

    尝试在类析构函数中运行异步操作失败 这是代码 public class Executor public static void Main var c1 new Class1 c1 DoSomething public class Class
  • Blazor 中有没有办法将 wasm-function(#) 反向映射回 c# 方法?

    我正在 Chrome 上运行 Blazor 页面 从 Chrome 分析器中看到它在代码 wasm function 633 上花费了大量时间 有什么办法让我知道这对应于什么c 代码吗 我想提高页面的性能 这将有助于在更改任何代码之前了解导
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • 如何停止无限循环?

    我正在编写一个程序 该程序将计算三角形或正方形的面积 然后提示用户是否希望计算另一个 我的代码已经运行到可以计算任一形状的面积的程度 但随后不再继续执行代码的其余部分 例如 如果选择了正方形 则计算面积 然后返回到正方形边长的提示 我假设这
  • 在 C#.NET 中安全删除文件

    在我正在做的一个项目中 我想为用户提供 安全 删除文件的选项 例如 用随机位或 0 覆盖它 在 C NET 中是否有一种简单的方法可以做到这一点 效果如何 你可以调用系统内部删除 http technet microsoft com en
  • 为什么以下 C 程序会出现总线错误?

    我认为这是第一个失败的 strtok 调用 好久没写C了 有点不知所措 非常感谢 include
  • 使用 using 声明时,非限定名称查找如何工作?

    根据 C 标准 这是格式错误还是格式良好 namespace M struct i namespace N static int i 1 using M i using N i int main sizeof i Clang 拒绝它 GCC
  • 来自 3rd 方库的链接器错误 LNK2019

    我正在将旧的 vc 6 0 应用程序移植到 vs2005 我收到以下链接器错误 我花了几天时间试图找到解决方案 错误LNK2019 无法解析的外部符号 imp 创建AwnService 52 在函数 public int thiscall
  • 为什么匹配模板类上的部分类模板特化与没有模板匹配的另一个部分特化不明确?

    这个问题可能很难用标题中的句子来描述 但这里有一个最小的例子 include

随机推荐