Reactjs React简单的全局实体缓存,而不是Flux/React/etc
我正在写一个小项目 在我的服务器上,我有被Reactjs React简单的全局实体缓存,而不是Flux/React/etc,reactjs,caching,scala.js,scalajs-react,Reactjs,Caching,Scala.js,Scalajs React,我正在写一个小项目 在我的服务器上,我有被uuid-s引用的实体 (内-s) 为了“有趣”,我不想使用flux/redux架构,但仍然在客户端上使用React(使用) 我想做的是使用一个简单的缓存,例如: 当ReactUserDisplayComponent希望使用uuid=0003 然后render()方法调用Cache(作为prop传入) 让我们假设这是UserDisplayComponent第一次请求这个特定的User(使用uuid=0003)而缓存还没有它 然后,Cache进行Ajax
uuid
-s引用的实体
(内-s)
为了“有趣”,我不想使用flux/redux架构,但仍然在客户端上使用React(使用)
我想做的是使用一个简单的缓存,例如:
- 当React
希望使用UserDisplayComponent
uuid=0003
- 然后
方法调用render()
(作为Cache
传入)prop
- 让我们假设这是
第一次请求这个特定的UserDisplayComponent
(使用User
)而uuid=0003
缓存还没有它
- 然后,
进行Cache
从服务器获取AjaxCall
用户
- 当
返回AjaxCall
时,触发Cache
re render
- 但是!现在,当组件从
缓存中请求
时,它会立即从用户
缓存中获取
用户
,并且不会触发实体
AjaxCall
- 我启动一个
render()
render()中的“stuff”询问
缓存中所有类型的
实体
返回缓存
或加载
本身实体
- 渲染结束时,
将所有缓存
-s发送到服务器,并等待它们全部返回AjaxRequest
- 一旦所有
都返回了(为了简单起见,假设它们返回了),AjaxRequests
会触发一个“Cache
”,现在之前请求的所有实体都会立即由re-render()
提供Cache
- 当然,如果我加载一个
实体,例如
类型,那么新到达的案例类UserList(ul:List[Ref[User]])
实体将触发
,以获取更多的呈现()
-s。但是现在我们不要担心这个实体
- “乐趣”
- 好奇心
- 探索
- 玩弄
- 我认为这个简单的缓存对于我的用例来说会更简单,因为我想以一种简单的方式将基于“REF”的“域模型”转移到客户机上:就像客户机在服务器上一样,网络将无限快且零延迟(这是缓存将模拟的)
缓存很难,因为缓存需要在某个点上失效,而不是上面提到的所有东西 Flux/redux对此毫无帮助。其中一个确实有用的库是,它的工作原理与您提出的解决方案非常相似,只是更加详细,并且位于React和GraphQL之上。阅读其文档将帮助您解决问题。如果您不需要整个React/GraphQL包,但您需要了解现有技术,那么您肯定可以在plain Scala.js中实现中继功能的一小部分 5。序列化和类型安全性 这是列表中唯一一个与Scala.js相关的问题,而不是Javascript和SPA Scala对象需要序列化才能在网络上传输。转换为JSON、protobufs或其他任何格式,但您需要一个不涉及容易出错的手动工作的系统。有许多Scala.js库可以解决这个问题,如upickle、Autowire、endpoints、sloth等。关键字:“Scala JSON库”或“Scala类型安全RPC”,具体取决于您需要哪种解决方案
我希望这些原则足以作为答案。当您理解这些问题时,您的解决方案是否适用于给定的用例应该是显而易见的。实际上,您没有描述您的解决方案如何解决问题2、4和5。您可以使用我提到的一些库,或者使用类似的想法/算法实现您自己的解决方案
在