私はreduxミドルウェアとそれがReduxストア内でどのように設定されるかを理解するのに苦労しています。例えば、私は、以下の実施例Reduxミドルウェアロジック
const store = compose(
resetRedux('LOGOUT_USER'),
applyMiddleware(...middlewares),
)(createStore)(rootReducer, initialState);
resetRedux
を有するストリングLOGOUT_USER
が送出されたときに、基本的に全体Reduxのストアをリセットするミドルウェアです。しかし、これは素晴らしいですが、resetRedux
ミドルウェア内にconsole.log
を置くと、それは一度しか呼び出されません。私はアクションを毎回チェックする必要があると考えて、奇妙です。格納。
export default function resetMiddleware(types = ['RESET']) {
return (next) => (reducer, initialState) => {
const resetTypes = Array.isArray(types) ? types : [types];
console.log('THIS IS ONLY CALLED ONCE??!')
const enhanceReducer = (state, action) => {
if (~resetTypes.indexOf(action.type)) {
state = undefined;
}
return reducer(state, action);
};
return next(enhanceReducer, initialState);
}
};
だから、私はconsole.log
は一度だけ呼び出されたときに、これが働いているか興味があります。
質問: 'compose()'と 'createStore()'を使う構文は、どこにありますか?それは_valid_ですが、ひどいです。最近、いくつかの質問でポップアップが見られました。まだどこかのドキュメントにある場合は、ドキュメントを更新してそのドキュメントを停止する必要があります。 'createStore(reducer、preloadedState、composEnhancers)' – markerikson
いくつかのスターターキットで使用しています。それが私がその論理を理解しようとしていた理由です。上記のコードを見ても、console.log文が1回だけ呼び出される理由は理解できません。私は、すべてのアクションで、reduxストアをリセットするかどうかを判断する条件付きチェックが行われていると考えています...さらに、applyMiddleware関数内にresetReduxを置くと動作しません。 – Detuned