我正在写一个“有趣”的 Scala/Scala.js项目。
在我的服务器上,我有uuid-s 引用的实体(在Ref -s 内)。
为了“有趣”,我不想使用flux/redux架构,但仍然在客户端使用React(使用ScalaJS-React)。
我想做的是拥有一个简单的缓存,例如:
- 当 React
UserDisplayComponent想要显示EntityUser时uuid=0003 - 然后该
render()方法调用Cache(作为 a 传入prop) - 让我们假设这是第一次
UserDisplayComponent要求这个特定的User(withuuid=0003) 并且Cache还没有它 - 然后从服务器
Cache获取AjaxCallUser - 当
AjaxCall返回Cache触发器时re-render - 但 !现在,当组件请求
Userfrom theCache时,它会立即UserEntity从 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”的“域模型”传递给客户端:就好像客户端在服务器上并且网络将是无限的快速和零延迟(这是缓存将模拟的)。