我正在尝试使用Redux构建一个侦听器中间件,该侦听器中间件监听调度的重击动作。
目标是当调度一个动作时,中间件使进程暂停并触发另一个动作(观察者)。我找到 NPM上一个不错的library,但似乎我的观察者没有抓住已调度的动作。调度第一个动作后,似乎没有触发监听器,什么也没发生。
我确保将中间件有效地注入到商店中。
这里是我的代码摘要:
react.js:
import { createMiddleware } from 'redux-listeners';
const listenMiddleware = createMiddleware();
listenMiddleware.addListener(POST_WORD_REQUEST, (dispatch) => {
// postFile is the listener action
// provided by mapDispatchToProps in an another file
this.props.postFile(word, base64Data)
})
reduxAction.js:
// postWord is the observed action
export const postWord = {...} => {
dispatch({
type: POST_WORD_REQUEST,
status: request
});
}
middleware.js:
import thunkMiddleware from 'redux-thunk'
import {applyMiddleware} from "redux"
import { createMiddleware } from 'redux-listeners';
const listenMiddleware = createMiddleware();
const middleware = applyMiddleware(
listenMiddleware,
thunkMiddleware
)
export default middleware // then createStore(appReducer, initialState, middleware)
答案 0 :(得分:1)
总结讨论中的问题,作为答案:
listenerMiddleware
实例的回调错误地使用了this.props
,因为它不在组件中,该回调将不存在现在,您已经说过了:似乎您试图基于已调度的Redux动作触发React组件中的行为。如您所述,这是“奇怪的”,不是推荐的结构化应用程序的方法。如果可能的话,我建议找到另一种做事的方式。