Вот исходный код.
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
Я думал, что промежуточное программное обеспечение для резервирования расположено между store.dispatch()
и reducer
, который находится внутриstore.
Когда мы отправляем какое-то действие в хранилище, редуктор магазина вызывается после next()
.
* 1013 функции промежуточного ПО. Неправильно ли я ошибаюсь?
Но как может эта ошибкаперехват промежуточного программного обеспечения e
тем не менее throw new Error("AAAAAAA")
находится в функции редуктора?
Вы можете увидеть вышеупомянутое поведение в https://www.youtube.com/watch?v=DJ8fR0mZM44
В видео инструктор говорит: «Фактическая ошибка никогда не возникала", но промежуточное ПО, регистрирующее объект ошибки, не смог правильно понять.