我正在写一个“有趣”的 Scala/Scala.js项目。
在我的服务器上,我有uuid
-s 引用的实体(在Ref -s 内)。
为了“有趣”,我不想使用flux/redux架构,但仍然在客户端使用React(使用ScalaJS-React)。
我想做的是拥有一个简单的缓存,例如:
- 当 React
UserDisplayComponent
想要显示Entity
User
时uuid=0003
- 然后该
render()
方法调用Cache
(作为 a 传入prop
) - 让我们假设这是第一次
UserDisplayComponent
要求这个特定的User
(withuuid=0003
) 并且Cache
还没有它 - 然后从服务器
Cache
获取AjaxCall
User
- 当
AjaxCall
返回Cache
触发器时re-render
- 但 !现在,当组件请求
User
from theCache
时,它会立即User
Entity
从 the获取,Cache
并且不会触发AjaxCall
我想实现的方式如下:
- 我开始一个
render()
- 里面的“东西”
render()
要求Cache
各种Entities
Cache
返回其中一个Loading
或Entity
本身。- 在渲染结束时,
Cache
将所有AjaxRequest
-s 发送到服务器并等待它们全部返回 - 一旦所有
AjaxRequests
都返回(让我们假设它们返回 - 为了简单起见)Cache
触发一个“re-render()
”,现在所有之前请求的实体都Cache
立即提供。 - 当然,新到达的
Entity
-s 可能会触发render()
获取更多Entity
-s 如果例如我加载一个Entity
例如case class UserList(ul: List[Ref[User]])
类型的。但是我们现在不用担心这个。
问题:
1)如果我以这种方式处理状态,我真的做错了吗?
2)是否有一个已经存在的解决方案?
我环顾四周,但一切都是 FLUX/REDUX 等......沿着这些思路...... - 为了:
- “乐趣”
- 好奇心
- 勘探
- 玩弄
- 我认为这个简单的缓存对于我的用例来说会更简单,因为我想以一种简单的方式将基于“REF”的“域模型”传递给客户端:就好像客户端在服务器上并且网络将是无限的快速和零延迟(这是缓存将模拟的)。