奇妙なバグがあるようです。私は現在 Redux を同形で使用してredux-thunk
おり、非同期アクションのミドルウェアとしても含めています。私のストア構成は次のようになります。
// Transforms state date from Immutable to JS
const transformToJs = (state) => {
const transformedState = {};
for (const key in state) {
if (state.hasOwnProperty(key)) transformedState[key] = state[key].toJS();
}
return transformedState;
};
// Here we create the final store,
// If we're in production, we want to leave out development middleware/tools
let finalCreateStore;
if (process.env.NODE_ENV === 'production') {
finalCreateStore = applyMiddleware(thunkMiddleware)(createStore);
} else {
finalCreateStore = applyMiddleware(
createLogger({transformer: transformToJs}),
thunkMiddleware
)(createStore);
}
// Exports the function that creates a store
export default function configureStore(initialState) {
const store = finalCreateStore(reducers, initialState);
if (module.hot) {
// Enable Webpack hot module replacement for reducers
module.hot.accept('.././reducers/index', () => {
const nextRootReducer = require('.././reducers/index');
store.replaceReducer(nextRootReducer);
});
}
return store;
}
これについての奇妙な部分は、私のファイルがうまく適用されているので、このファイルに何か問題があるとは思わないということですcreateLogger
。すべてのアクションと状態をログアウトしますが、アクション クリエーターでオブジェクトではなく関数を返すと、実行が失われます。私はdebugger
ステートメントを投げてみましたが、ヒットすることはなく、ミドルウェアの並べ替えも役に立たないようです。
createUser(data) {
// This `debugger` will hit
debugger;
return (dispatch) => {
// This `debugger` will NOT hit, and any code within the function will not execute
debugger;
setTimeout(() => {
dispatch(
AppActionsCreator.createFlashMessage('yellow', 'Works!')
);
}, 1000);
};
},
誰かが前にこのようなことを経験したことがありますか?