React-native Redux应该将业务逻辑放在行动还是减速器中

问题描述:

我已经开始致力于reactnative - redux项目。我对这个功能范例是全新的。我的问题很简单:我有不同的登录/注册选项,其中一个是Facebook。 在我的动作文件中,我从facebook获取令牌。我应该将它发送到服务器进行检查。这个请求可以返回多个结果React-native Redux应该将业务逻辑放在行动还是减速器中

  • 这是新用户,开拓新的用户页面
  • 该用户已经存在,并且获得批准,开放的应用程序页面
  • 此用户已存在,但处理不当批准短信验证的是,打开短信验证屏幕。

问题是;我应该在哪里放置这些逻辑?我应该把所有事情都做好,或者只是发送事件给reducer并让它做出决定。我对此感到困惑。

感谢

Redux FAQ entry on "where should my business logic live?"

有没有单一明确的答案的逻辑件应在减速或行动的创建者去什么。一些开发人员更喜欢拥有“胖”动作创作者,而“瘦”减速器只是将动作中的数据取而代之,并盲目地将其合并到相应的状态中。其他人则试图强调保持尽可能小的动作,并尽量减少动作创建者对getState()的使用。 (对于这个问题的目的,其他的异步方法,如传奇,并观测落在“行动的创建者”一类。)

此评论很好地概括了二分法:

现在的问题是什么放入动作创造者以及减速器中的选择,在胖瘦动作对象之间进行选择。如果将所有逻辑放入动作创建器中,则最终会得到基本上声明状态更新的胖动作对象。减速器变得纯粹,笨拙,添加 - 删除它,更新这些功能。他们将很容易撰写。但是你的业务逻辑不会太多。如果你在reducer中加入更多的逻辑,你最终会得到很好的精简动作对象,大部分的数据逻辑集中在一个地方,但是你的reducer很难编写,因为你可能需要来自其他分支的信息。你最终会得到大型减速器或减速器,这些减速器或减速器会从该州的较高位置获得额外的参数。

我还讨论了“厚”与“薄”减速的想法在我的博客文章The Tao of Redux, Part 2 - Practice and Philosophy

+0

当然,一如既往没有明确的答案,但我应该选择脂肪动作还是脂肪减少?然而,你的博客帮助我很多,尤其是在减少逻辑上,这将帮助我减小动作的大小,并减少切片选择器的功能。谢谢 – kekkeme