我正在学习 redux(在 Flutter 中使用 Firestore,但我认为这并不重要),试图超越基础知识,我对“计算状态”(甚至不知道该怎么称呼它)应该去哪里感到困惑.
假设我有这样的应用程序状态:
- 用户:用户的一个实例
- 电影:用户电影列表
- 最近最喜欢的电影:用户标记为“最喜欢”并具有最近创建日期的上述电影之一
我能够设置用户(登录成功操作)并请求用户的电影(登录成功中间件)。电影查询完成后,我对在哪里进行初始化感到困惑recentFavoriteMovie
。似乎有很多选择......
- SetMovies 中间件可以计算它,然后调用 SetRecentFavorite 动作。
- SetMovies 减速器能做到吗?或者这是否被认为是减速器的副作用,这是不允许的?
- 我想偷懒。在 redux 中是否可以为应用程序状态对象提供一个计算和缓存它的方法?如果是这样,我仍然需要在设置新电影列表时清除缓存值。但这似乎与上面的(b)相同。
- 我可以将 movies 属性和 favoriteMovies (属性或方法)放在我的用户对象中(它们有点属于那里),然后每次一个或另一个更改时只调度一个 UpdateUser 操作。一般来说,我不知道何时/是否将我的应用程序状态的某些子属性“提升”到顶层,以便应用程序对其做出反应。
这些是所有或任何一个有效的选择吗?我希望这是一个有意义的问题。我什至可能太落后了,无法正确地问这个问题。