我已经在基于此real-world example的小型项目上使用了Redux / sagas工作流程,但这些工作的逻辑并不那么复杂。我应该如何处理更全面的api(即Reddit的API),而不会让事情过于冗长?
const
?即,
export const fetchUser = login => callApi(`users/${login}`, userSchema)
real-world
答案 0 :(得分:2)
我认为答案取决于您希望组件的流动程度。
我正在使用sagas处理大型代码库,我们的页面被分成"类型",例如" list"类型,"形式"类型等。
我们有一个负责获取内容的saga,而每个pageComponent在呈现时负责提供端点。
这允许采用非常模块化的方法来添加处理文件系统的一个子部分所需的组件。
我们的网页主要是一个包含所有这些信息的配置文件,我们使用此配置来呈现"泛型"具有正确数据的组件。
Saga可重用性
我认为Sagas是顺序进程,可以用于异步获取数据,但它们对于需要按顺序处理的任何内容都很有用。
这些"流程"在代码库中有时非常相似,那些是你想要概括的那些
就像你说的,最常见的操作是任何端点的CRUD,可以很容易地组合在一起。
Login
与loadUserList
极为不同,之后需要发生不同的事情,但loadUserList
和loadRepoList
非常相似。
影响可重用性的事情
您控制API的能力,如果您可以决定所使用的API的形状,您可以在前端获得更多的概括。
应用程序的形状(正面) - 您的页面是否奇怪地依赖于彼此的状态?例如,保险计划的表格相互链接并不少见,您可以按照您想要的任何顺序填写前3个表格,但一旦完成全部三个表格,第4个解锁。
这些依赖中的每一个通常都有自己的传奇来控制你的使用故事。
可以统一的常见Sagas
关于实体缓存
实体缓存只是他们选择的名称,但这可以追溯到前面提到的几点。
您的应用程序是在陈旧数据上运行,还是每次加载组件时都从服务器获取?
如果数据仅被提取一次并且您显示过时数据,则您将其存储在一种缓存中(基本上是redux存储)。
如果您显示过时数据,这是要走的路。