Как сбросить (избыточное) значение состояния редуктора при любых действиях? - PullRequest
0 голосов
/ 04 ноября 2018

Я хотел бы сбросить свое сообщение об ошибке, которое я сохраняю на моем пользовательском редукторе, при любом действии, то есть при отправке из любого модуля, но в основном при навигации.

Я искал типы действий от react-navigation, чтобы слышать их в своем пользовательском редукторе, но не мог найти способ, и их явное написание привело бы к плохому качеству кода.

Я сделал так, как я покажу дальше (обратите внимание на случай по умолчанию ).

Но есть проблема: redux-persist прекратить регидратацию моего пользовательского редуктора.

export default function reducer(state = initialState, action) {
  const { type, payload } = action
  switch (type) {
    case LOGIN_PENDING: {
      return _.merge(state, { loading: true })
    }
    case LOGIN_FULFILLED: {
      return _.merge(state, { ...payload, loading: false })
    }
    case LOGIN_REJECTED: {
      return _.merge(state, { ...initialState, error: payload.message })
    }
    case SIGNUP_PENDING: {
      return _.merge(state, { loading: true })
    }
    case SIGNUP_FULFILLED: {
      return _.merge(state, { ...payload, loading: false })
    }
    case SIGNUP_REJECTED: {
      return _.merge(state, { ...initialState, error: payload.message })
    }
    default: {
      return { ...state, error: '' }
    }
  }
}

Заранее спасибо.

1 Ответ

0 голосов
/ 04 ноября 2018

Может быть, вы можете попробовать что-то вроде

import { REHYDRATE } from 'redux-persist/lib/constants'

// in your reducer
case REHYDRATE: {
      return state
    }
default: {
      return _.merge(state, { error: '' })
    }
...