Редуктор редуктор не показывает мой консольный журнал и возвращает неопределенный - PullRequest
0 голосов
/ 23 февраля 2020

Привет, у меня возникла проблема с моим приложением Redux, так как я добавил JWT в свой API-интерфейс для гнезд, вот код моего редуктора:

export default function reducer(state = {}, action) {
    switch (action.type) {
      case 'USER_LOGIN_SUCCESS':
        console.log('USER_LOGIN_SUCCESS')
        return action.payload.user;
      case 'USER_REGISTER_SUCCESS':
        // user exist
        if(action.payload.status === 409){
            console.log(action.payload)
            return state;
        }
        console.log(action.payload)
        return state
      case 'USER_REGISTER_FAILURE':
      case 'USER_LOGIN_FAILURE':
      default:
        console.log('lol');
        return state
    }
  }

Когда я вхожу в свой API с помощью redux-api -mddleware это то, что у меня есть в моей консоли:

redux.js:463 Uncaught (in promise) Error: Given action "USER_LOGIN_SUCCESS", reducer "user" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.
    at combination (redux.js:463)
    at dispatch (redux.js:213)
    at _callee$ (index.umd.js:2874)
    at s (index.js:1)
    at Generator._invoke (index.js:1)
    at Generator.e.<computed> [as next] (index.js:1)
    at asyncGeneratorStep (index.umd.js:33)
    at _next (index.umd.js:55)

Когда я попробовал свой запрос с POSTMAN, он работал отлично: / Дело в том, что он даже не показывает console.log в моем случае с редуктором : 'USER_LOGIN_SUCCESS'

Вот ответ на запрос POSTMAN: ОТВЕТ POSTMAN

1 Ответ

1 голос
/ 23 февраля 2020

В вашем USER_LOGIN_SUCCESS случае вы возвращаете значение полезной нагрузки действия.

С редуктором вы должны всегда возвращать объект состояния или неизменную копию объекта состояния.

Это Непонятно, как выглядит объект состояния редуктора, но я предполагаю, что он содержит свойство пользователя

return {
  ...state,
  user: action.payload.user
}
...