Javascript 将配置传递给Redux操作创建者的正确方法
将配置注入动作创作者的“重复”方式是什么 考虑一个异步操作创建者:Javascript 将配置传递给Redux操作创建者的正确方法,javascript,configuration,redux,redux-thunk,Javascript,Configuration,Redux,Redux Thunk,将配置注入动作创作者的“重复”方式是什么 考虑一个异步操作创建者: export function login(username, password) { return (dispatch, getState) => { const service = Auth.createService(config); // <- that's the one service.login(username, password).then((data) =
export function login(username, password) {
return (dispatch, getState) => {
const service = Auth.createService(config); // <- that's the one
service.login(username, password).then((data) => {
const {token} = data;
dispatch(success(token));
}).catch((err) => {
Logger.log(err);
});
};
}
由于多种原因,它是次优的,不允许您为特定服务实例覆盖它们
使用中间件(在redux thunk上的一些扩展)将提供注入配置的能力,但是:
getState
注入,因为对我来说,配置是应用程序状态的一部分,尤其是在它是可编辑的情况下this.props.dispatch(登录名(用户名、密码、配置))代码>,对我来说,是极其冗长的。我认为来自Este的这篇文章相当简洁:
// Like redux-thunk with dependency injection.
const injectMiddleware = deps => ({ dispatch, getState }) => next => action =>
next(typeof action === 'function'
? action({ ...deps, dispatch, getState })
: action
);
这让你可以编写动作创作者,比如
export function login(username, password) {
return ({ dispatch, getState, authService }) => {
并在初始化中间件时注入authService
export function login(username, password) {
return ({ dispatch, getState, authService }) => {