这是源代码。
import {applyMiddleware, createStore} from 'redux'
const reducer = (state = initialState, action) => {
...
if(action.type === 'E'){
throw new Error("AAAAAAA")
}
return initialState;
}
const error = (store) => (next) => (action) => {
try {
next(action)
} catch(e) {
console.log("BBBBBB", e);
}
}
const middleware = applyMiddleware(error);
const store = createStore(reducer, 1, middleware);
store.subscribe(() => {
...
})
store.dispatch({type: "E"})
结果为BBBBBB Error:AAAAAAA
我认为redux中间件位于商店内部的store.dispatch()
和reducer
之间。
当我们向商店分派一些动作时,在中间件函数的next()
之后调用商店的reducer。
我错了吗?
但是,错误中间件如何捕获e
却位于简化程序功能中?throw new Error("AAAAAAA")
?
您可以在https://www.youtube.com/watch?v=DJ8fR0mZM44
中看到上述行为在视频中,讲师说“实际错误从未触发”,但是由于中间件记录了错误对象,因此无法正确理解。