Javascript Redux自动:动作链接与索引缩减器

Javascript Redux自动:动作链接与索引缩减器,javascript,redux,chaining,redux-middleware,Javascript,Redux,Chaining,Redux Middleware,有人能告诉我在reducer函数中使用和在main函数中使用有什么区别吗 我想保存一个错误 A) store/chat/send.js import actions from 'redux-auto' //... function rejected(chat, payload, error){ return chat; } onError.chain = (c, p, error) => actions.logger.save(error) //... 或 B) store/

有人能告诉我在reducer函数中使用和在main函数中使用有什么区别吗

我想保存一个错误

A) store/chat/send.js

import actions from 'redux-auto'

//...

 function rejected(chat, payload, error){
  return chat;
} onError.chain = (c, p, error) => actions.logger.save(error)

//...

B) store/logger/index.js

import actions from 'redux-auto'
import save from './save'

export default function (errorsLog = [], action)
{
   if(action.type == actions.chat.send.rejected){
      return save(errorsLog,action.payload)
   }
   return errorsLog
}
他们都能工作

我的问题是:

  • 我不知道什么会更好。有什么区别

  • 为什么我要用一个而不是另一个

  • 另外,我不能在
    被拒绝
    。为什么存在此
    功能


  • 感谢您的帮助:)

    其中一个主要的重复点是可预测性。我们应该尽可能多地使用
    函数。减速器不得有任何副作用

    最近我也在做同样的功能——错误(用户操作等)日志记录。我认为所有这些行为都是副作用。它们对用户没有利润,也不能成为主要业务逻辑的一部分

    这就是为什么我使用
    自定义中间件
    捕获需要记录的所有操作。我需要记录的操作已经用一些
    meta-prop
    (例如
    {log:'errorLog'}
    )标记,并且在中间件中我检查了每个操作。如果它有一个
    log
    prop,那么我会制作一些日志程序

    最后,我得到了清晰易懂的代码,其中所有日志记录的副作用都包含在中间件中

    A)使用链(OnError)将在源(被拒绝的)减速器完成后触发操作。在您的门店内创建新呼叫

    B) 您正在更改源reducer调用中的状态

    你的问题:

    1,2)使用链接将使代码更具可读性,因为下一个函数与源reducer并置,但将其放在索引组中会对存储区的该部分执行所有操作


    3) 直接在reducer函数中调用action函数。这是一种反模式。这是在调度动作的中间发出一个动作。减速器将在不一致的数据上运行。

    感谢您的回复,但我正在尝试了解此框架的机制。你对redux auto中的链接有什么想法吗?因为这似乎是一种新的方法。我没有使用这个库。我想完全控制我的应用程序,但是
    redux auto
    (正如文档中所写的那样)通过隐藏部分实现来减少样板文件。将我的动作创造者注入
    动作
    对象对我来说是一种黑魔法。但这只是我的意见。