Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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
Reactjs 我们是否应该为作为api响应接收的单个对象制作不同的缩减器,以避免复杂性。或者有一个减速器_Reactjs_Redux - Fatal编程技术网

Reactjs 我们是否应该为作为api响应接收的单个对象制作不同的缩减器,以避免复杂性。或者有一个减速器

Reactjs 我们是否应该为作为api响应接收的单个对象制作不同的缩减器,以避免复杂性。或者有一个减速器,reactjs,redux,Reactjs,Redux,我有一个api响应,比如 预订-> 预订详情, 嘉宾名单, 笔记, 嘉宾们注意到, 文件, 预订活动, 付款, 电子邮件等 上面的每一项都有添加/编辑/删除等操作,因此将它们放在一个reducer中会使reducer变得非常大,并且很难管理。 我应该每个项目有一个减速机吗?如果我这样做了,那么如何将数据传递给特定的还原器。e、 g.成功获取预订详细信息后,我会将不同的项目分别传递给不同的还原器吗?这是一种良好且易于管理的方法吗?这取决于您的应用程序结构。您应该为每个父组件创建一个减速机,但是如果

我有一个api响应,比如

预订-> 预订详情, 嘉宾名单, 笔记, 嘉宾们注意到, 文件, 预订活动, 付款, 电子邮件等

上面的每一项都有添加/编辑/删除等操作,因此将它们放在一个reducer中会使reducer变得非常大,并且很难管理。
我应该每个项目有一个减速机吗?如果我这样做了,那么如何将数据传递给特定的还原器。e、 g.成功获取预订详细信息后,我会将不同的项目分别传递给不同的还原器吗?这是一种良好且易于管理的方法吗?

这取决于您的应用程序结构。您应该为每个父组件创建一个减速机,但是如果您觉得它越来越大并且面临管理困难,那么您应该找出您使用的子组件,并为它们单独创建减速机


要轻松地管理应用程序并使其可重用,最好的方法是遵循以下步骤。但是,我再次说,这将取决于应用程序的架构。

< P>您应该考虑每个项目类型(例如,代码>预订< /代码>,<代码>客户>代码>代码>文档>代码>等。阅读redux文档中的内容。您可以考虑使用包和/或ReDux工具包来完成一些工作。

每个实体都可以被视为相同的,您只需要在操作中包含足够的信息,以识别您所在状态中的正确对象(即
类型
id

您可以抽象地处理不同的实体,但也可以创建特定的选择器

const getEntity = (state, type, id) => state[type][id];

const getBooking = (state, id) => state.booking[id];
当您得到一个包含许多实体的API响应时,您将首先对其进行规范化,然后通过一个操作存储所有实体

{
  type: 'UPDATE_ENTITY',
  payload: {
    type: 'booking',
    id: 5,
    changes: { /*...*/ }
  }
}