Javascript Redux自动:动作链接与索引缩减器
有人能告诉我在reducer函数中使用和在main函数中使用有什么区别吗 我想保存一个错误 A) store/chat/send.jsJavascript 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/
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
(正如文档中所写的那样)通过隐藏部分实现来减少样板文件。将我的动作创造者注入动作
对象对我来说是一种黑魔法。但这只是我的意见。