我应该使用一种或多种操作类型来表示此异步操作吗?

Kev*_*ist 12 reactjs redux

我正在为搜索系统构建一个前端,几乎所有用户操作都需要触发相同的异步操作来重新获取搜索结果.例如,如果用户输入关键字,那么我们需要提取/api/search?q=foo,如果他们稍后选择我们提取的类别/api/search?q=foo&categoryId=bar.我原来有单独的行动类型FETCH_RESULTS,SELECT_CATEGORY,DESELECT_CATEGORY,等我创建了一个异步操作的创造者FETCH_RESULTS,但其他人是同步的.我想的越多,它们最终都需要从后端重新获取结果,并根据后端的响应更新应用程序状态.

对于我来说,使用单个异步动作创建器进行任何更改是否合理?或者为每个不同的用户操作(选择关键字,类别或过滤器)使用异步操作创建者会更好吗?

我认为粒度操作的优点是事件更准确地反映用户所做的事情(例如用户选择了一个类别)与必须查看有效负载以找出实际改变的内容,但它们都非常相似.

Nat*_*gen 11

当然,根据您对项目的了解,您可以真正回答这个问题.我认为让行动更加细化并没有任何固有的优势,如果没有,那就不值得付出额外的努力.我会有一个通用的FILTER_CHANGED事件,而不用担心能看到什么特别改变 - 大概是动作不会复杂,所以我不会调整动作很多.随着过滤器状态变得更加复杂和多样化,打破行动可能更有意义.但默认情况下,我并没有真正看到太多价值.


Dan*_*mov 9

我完全赞同内森的回答.

我只想补充一点,为了判断动作A和B是否真的是一两个动作,你需要问自己:"如果我改变一些减速器对A的反应,我还需要改变它们对B的反应方式?"

当处理程序在reducer代码中一起更改时,它们可能应该是单个操作.当他们的变化可能不会相互影响,或者如果许多减速器只处理其中一个但不处理另一个,它们应该保持分离.