我目前正在尝试为我的 Blazor WASM 应用程序实现 Fluxor,我发现的所有说明/教程都推荐了类似商店示例的内容:
public record AppStore {
int ClickCounter,
bool IsLoading,
WeatherForecast[]? Forecasts
}
Run Code Online (Sandbox Code Playgroud)
然后只讨论初始状态,更新只发生在数组上,bool而int数组只被彻底替换。即,示例始终从服务器获取完整数据,例如 100 个条目。
现在,这是我的问题:当我已经有 100 个条目并且只想添加/更新/删除一个条目时,如何正确处理减速器中的数组?首先,这是一个好主意吗?
最好的办法是使用ImmutableList<T>orImmutableArray<T>来代替,因为此类经过优化,旨在返回包含旧数据的新实例,但无需复制元素。
我最近发布了一个名为 的新库Reducible,它有助于创建复杂的状态缩减器。它会导致更少的更新(例如,如果列表中的项目未被替换,则不会创建新的父对象)。
https://github.com/mrpmorris/Reducible/blob/master/README.md