在Redux中将API调用放到哪里更改道具而不更改状态?

时间:2018-07-04 13:20:14

标签: reactjs redux architecture react-redux flux

我正在调用API端点来填充具有大量行的表。用户可以单击一行,然后将其重定向到可以在其上编辑元素的页面。他们永远无法编辑表本身中的任何内容。他们总是被重定向到单独的页面。

我对此进行了相当多的思考,并认为该不是状态。它不能改变。对吧?

问题::在Redux应用程序中,我应从API哪里获取数据并将结果作为prop传递到表中?我还会在setup.py内执行此操作吗?这似乎是错误的,因为我的操作根本不会修改状态:我取回的数据将只是静态显示。 但是:如果不在Redux action中,还有什么地方?在组件本身中?我也不确定,因为在actions文件夹/文件中包含应用程序的所有actions似乎很简洁。

您会推荐什么?

PS:人们还可以说,表中的元素是状态,因为它们仅在单独的页面上被修改(表本身中没有)。但是我为此必须获取的数据将非常大,并且用户一次只能使用该表的一个元素,因此似乎只是将Redux误用作数据库。将当前单击的项目作为状态,并从服务器中获取一个轻量级列表似乎更有意义,该列表仅填充表格,但不保存任何其他嵌套数据(只要用户选择他/她要编辑的项目)看起来正确吗?

3 个答案:

答案 0 :(得分:0)

您可以将应用程序的状态与Redux和React的本地状态混合使用。这没错。这取决于您如何设置应用程序的逻辑。例如,对于您的情况,如果除了此组件之外的其他任何地方都不需要这些获取的数据,则可以将该数据保持在组件的状态。

您的组件将获取数据,保持状态,然后将相关的props传递给子组件(将在其中编辑数据),其余工作将在那里进行。同样,没有其他组件需要这些数据。如果是这种情况,对我(作为一个学习者)来说,将状态保留在您的组件中似乎是合乎逻辑的。

答案 1 :(得分:0)

您可以在redux动作中调用API端点,然后将有效负载中的响应传递给reducer,后者会将APi返回的数据置于状态。

答案 2 :(得分:0)

如果您不想从以下状态访问结果数据:

  1. 使用redux动作调用api
  2. 在减速器中获取数据(并根据需要过滤)
  3. 将结果数据放入主redux存储区
  4. 将结果数据直接与react组件中的this.props.<result_data_name>一起使用。

如果您要将这些数据传递给子组件,则仍然仅使用props,因为该表是只读的,因此您无需在react状态下存储任何内容。

通过这种方式,您无需将props数据置于状态即可使用。只是直接使用道具本身的数据。