React Redux中的无状态事件监听器

时间:2017-01-31 15:24:14

标签: redux flux

我需要在基于事件的react / redux应用程序中添加功能。

我使用redux并且我有通过操作改变我的应用程序状态的reducer。一些操作例如:(USER_CLICKED_BUTTON,AJAX_CALL_STARTED,AJAX_CALL_ERROR,AJAX_CALL_SUCCESS)

我想为这些事件添加监听器,并做一些与状态无关的工作,特别是调用另一个API,如分析。

添加另一个" reducer"是否有意义?没有真实状态,只是听取这些行动和行为(例如呼吁ga(...)?)

类似的东西:

var Actions  = require ('../actions/actionTypes');

var gaReducer = function(state, action) {
    switch (action.type){
        case Actions.USER_CLICKED_BUTTON: 
               ga('send', 'event', 'user-clicked-button');
               break;
    }

    return state;

}

1 个答案:

答案 0 :(得分:1)

这听起来像中间件的好例子。查看https://github.com/evgenyrodionov/redux-logger以获取示例。

然后你的商店看起来像:

const middleware = [
  myAnalyticsMiddleware()
];

export default createStore(reducer, applyMiddleware(...middleware));