Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Redux/sagas:更大API的方法';s_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript Redux/sagas:更大API的方法';s

Javascript Redux/sagas:更大API的方法';s,javascript,reactjs,redux,Javascript,Reactjs,Redux,在此基础上,我曾在小型项目上使用过Redux/sagas工作流,但其逻辑并不复杂。我应该如何使用更全面的api(即Reddit的api),而不让事情变得过于冗长 我是否为每个端点生成一个常量?即。, export const fetchUser=login=>callApi(`users/${login}`,userSchema) 我是否应该担心如何管理这个问题 是否有一种方法可以进一步降低复杂性/样板文件(即,对同一端点使用get/put/post/delete对请求类型进行进一步分组) 有

在此基础上,我曾在小型项目上使用过Redux/sagas工作流,但其逻辑并不复杂。我应该如何使用更全面的api(即Reddit的api),而不让事情变得过于冗长

  • 我是否为每个端点生成一个
    常量?即。,
    
    export const fetchUser=login=>callApi(`users/${login}`,userSchema)
  • 我是否应该担心如何管理这个问题
  • 是否有一种方法可以进一步降低复杂性/样板文件(即,对同一端点使用get/put/post/delete对请求类型进行进一步分组)
  • 有没有比真实世界更大/更复杂的例子

我认为答案取决于您希望部件的流动性

我正在使用sagas开发一个大型代码库,我们的页面被分成“类型”,例如“列表”类型、“表单”类型等

我们有一个saga负责获取内容,而呈现时的每个pageComponent负责提供端点

这允许一种非常模块化的方法,添加一个您需要处理文件系统的一个子部分的组件

我们的页面主要是一个包含所有这些信息的配置文件,我们使用此配置来呈现具有正确数据的“通用”组件

Saga可重用性

我将Sagas视为连续过程,它们可以用于异步获取数据,但对于需要按顺序处理的任何事情也很有用。
这些“流”有时在一个代码库中非常相似,这些是您想要概括的。
正如您所说,对于任何端点,最常见的操作都是CRUD,可以轻松地组合在一起

Login
loadUserList
极为不同,之后需要发生不同的事情,但是
loadUserList
loadRepoList
极为相似

影响可重用性的事情

  • 您控制API的能力,如果您可以指定您使用的API的形状,您可以在前端进行更多的概括

  • 应用程序的形状(正面)-页面是否奇怪地依赖于其他页面的状态?例如,保险计划中有相互链接的表单并不少见,您可以按任意顺序填写前3张表单,但一旦所有三张表单都完成,第4张表单就会解锁。
    这些依赖关系中的每一个通常都有自己的传奇故事来控制你的使用故事的流程

  • 您的应用程序是否需要同步?你可以很容易地创建自动同步数据与你的不同端点并更新你的ReDux状态的SaaS,这里有很多要考虑的,包括如果我们决定用新的数据中断用户(我们可能想让他知道他编辑的表格有过时的数据)-同步需要一个不同的传奇,因为通常在同步哪些数据时有不同的业务规则-如果规则非常不同,这会迫使您创建多个传奇)
  • 可以统一的常见传奇

  • UserSagas-登录,注销
  • FetchData—获取单个记录或集合
  • DeleteData—删除单个记录或ID集合
  • 数据同步-定期从远程服务器更新本地数据
  • 关于实体缓存

    实体缓存只是他们选择的一个名称,但这可以追溯到前面提到的要点

    您的应用程序是在陈旧数据上运行,还是在每次加载组件时都从服务器获取数据?
    如果只提取一次数据,并且显示陈旧数据,则将其存储在一种缓存中(基本上就是redux存储)。
    如果您显示过时的数据,这就是方法