3

我是使用状态管理的新手。目前我正在开发一个 blazor 应用程序,我偶然发现了“fluxor”框架,它允许通过通量模式进行状态管理。Fluxor 对我来说工作得很好,但是我似乎无法弄清楚页面状态的实际存储位置。它是在缓存中,数据库还是其他一些奇特的方式?有没有办法让我在浏览器中查看存储的数据?

顺便说一下,我在我的应用程序的客户端使用了fluxor。

谢谢你的协助!

4

2 回答 2

4

状态保存在内存中。您可以通过启用 Redux Devtools 来使用漂亮的 GUI 查看状态,.UseReduxDevTools()如下所示:

services.AddFluxor(o => o
    .ScanAssemblies(typeof(SomeType).Assembly)
    .UseReduxDevTools());

然后使用 redux devtools 插件:

https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd?hl=en

在此处输入图像描述

如果您希望将状态保存到本地存储或数据库,我创建了一个库来保存名为 Fluxor.Persist 的状态:

https://github.com/Tailslide/fluxor-persist

于 2021-05-06T16:00:22.393 回答
1

AnIStore被实例化为 Scoped 依赖项。最终,这是当前用户一切的根源。

当您注入IStoreIState<Whatever> IDispatcherIActionSubscriber它们最终将来自存储在该IStore实例中的状态。

如果你将 IStore 注入到某个东西中,你可以遍历它的 Features 属性,这是一个IFeature按名称键控的字典(名称来自IFeature.GetName)。

IFeature 有一个object GetState()可以用来获取状态的方法。

这是访问状态的非通用方式。状态实际上是使用泛型存储的。

查看 ReduxDevTools 代码,您将看到如何使用和获取所有状态(发送到 ReduxDevTools 浏览器插件)的IStore.Features示例GetState

https://github.com/mrpmorris/Fluxor/blob/master/Source/Fluxor.Blazor.Web.ReduxDevTools/ReduxDevToolsMiddleware.cs#L67

OnJumpToState方法中它显示了我如何从浏览器插件恢复历史状态

https://github.com/mrpmorris/Fluxor/blob/master/Source/Fluxor.Blazor.Web.ReduxDevTools/ReduxDevToolsMiddleware.cs#L92

于 2021-05-07T15:51:57.753 回答