Redux-auto:动作链接与索引缩减器
Redux-auto: action chaining vs index reducer
谁能告诉我使用chain on a reducer function and doing work in the main index reducer function in redux-auto
有什么区别
我要保存错误,
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
}
它们都有效
我的问题:
不知道哪个更好。有什么区别?
为什么我要用一个而不是另一个?
此外,我不能只在
rejected
。为什么存在此 chain
功能?
感谢您的帮助:)
Redux 的主要特点之一是可预测性。我们应该尽可能多地使用 pure
函数。 reducer 绝对不能有任何副作用。
最近我研究了相同的功能 - 错误(用户操作等)日志记录。我认为所有这些操作都是side-effects
。它们对用户没有利润,不能成为主要业务逻辑的一部分。
这就是为什么我使用 custom middleware
来捕获我需要记录的所有操作。我需要记录的操作已用一些 meta-prop
(例如 {log: 'errorLog'}
)标记,并且在中间件中我检查了每个操作。如果它有一个 log
道具,那么我会制作一些记录器魔法。
最后,我得到了清晰易懂的代码,其中所有的日志副作用都封装在中间件中。
A) 使用 chain(OnError) 将在 source(rejected) reducer 完成后触发操作。在您的商店中创建一个新电话。
B) 您正在更改源减速器调用中的状态
您的问题:
1,2) 使用链接将使您的代码更具可读性,因为下一个函数与源减速器并置,但将它放在索引组中,所有操作都会发生在商店的那部分。
3) 直接在 reducer 函数中调用 action 函数。是一种反模式。这是在调度动作的中间调度动作。 reducer 将在不一致的数据上运行。
谁能告诉我使用chain on a reducer function and doing work in the main index reducer function in redux-auto
有什么区别我要保存错误,
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
}
它们都有效
我的问题:
不知道哪个更好。有什么区别?
为什么我要用一个而不是另一个?
此外,我不能只在
rejected
。为什么存在此chain
功能?
感谢您的帮助:)
Redux 的主要特点之一是可预测性。我们应该尽可能多地使用 pure
函数。 reducer 绝对不能有任何副作用。
最近我研究了相同的功能 - 错误(用户操作等)日志记录。我认为所有这些操作都是side-effects
。它们对用户没有利润,不能成为主要业务逻辑的一部分。
这就是为什么我使用 custom middleware
来捕获我需要记录的所有操作。我需要记录的操作已用一些 meta-prop
(例如 {log: 'errorLog'}
)标记,并且在中间件中我检查了每个操作。如果它有一个 log
道具,那么我会制作一些记录器魔法。
最后,我得到了清晰易懂的代码,其中所有的日志副作用都封装在中间件中。
A) 使用 chain(OnError) 将在 source(rejected) reducer 完成后触发操作。在您的商店中创建一个新电话。
B) 您正在更改源减速器调用中的状态
您的问题:
1,2) 使用链接将使您的代码更具可读性,因为下一个函数与源减速器并置,但将它放在索引组中,所有操作都会发生在商店的那部分。
3) 直接在 reducer 函数中调用 action 函数。是一种反模式。这是在调度动作的中间调度动作。 reducer 将在不一致的数据上运行。