在Redux中调试reducer有困难

时间:2019-03-13 12:33:29

标签: javascript reactjs redux react-redux

我在工作中遇到的代码库中遇到了这些化简器。

const ACTION_HANDLERS = {
  [LOGIN_REQUEST]: (state, action) => ({
    ...state,
    isAuthenticating: true
  }),
  [LOGIN_SUCCESS]: (state, action) => ({
    ...state,
    isAuthenticating: false,
    isAuthenticated: true,
    userId: action.userId,
    authToken: action.auth,
    authTTL: action.ttl,
    authCreatedAt: action.created,
    isNewUser: action.isNewUserFlag
  }),
};

export default function authReducer(state = initialAuthState, action) {
  const handler = ACTION_HANDLERS[action.type];
  if(handler!==undefined){
      console.log('login handler',handler);
     // debugger;
  }

  return handler ? handler(state, action) : state;
}

我的担忧与如何调试这种预编写的reducer方法有关。 我在ACTION_HANDLERS中的每个[]之前都引入了控制台日志,但是从语法上讲它们是错误的。 我以前写过减速器,他们是这样的。

export default function FundsReducer(state=INITIAL_STATE,action={}){

  switch(action.type){

      case GET_ALL_FUNDS_FAILED:{
        return{
          ...state,
           funds:{
            ...state.funds,
            failed:true,
            pending:false,

          }
        };
      }
      case GET_ALL_FUNDS_PENDING:
      {
        let {options}=action.payload;

        return{
          ...state,
           funds:{
            ...state.funds,
            data:[],
            failed:null,
            pending:true,
          }
        };
      }
      case GET_ALL_FUNDS:
      {
         let data;
         data=action.payload.response.data;
        return{
          ...state,
          funds:{
            ...state.funds,
            data,
            pending:false,
          }
        }
      }

我在调试这些reducer和引入控制台日志时遇到困难。

1 个答案:

答案 0 :(得分:1)

您可以使用@ remix23提到的redux中间件,也可以按照以下方式更改操作,以便记录状态或操作。

[LOGIN_REQUEST]: (state, action) => {
 console.log(action);
 return {
    ...state,
    isAuthenticating: true
  }
}

希望这会对您有所帮助。