Как сбросить (избыточное) значение состояния редуктора при любых действиях?

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

Я искал типы действий от 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 ответ

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

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

// in your reducer
case REHYDRATE: {
      return state
    }
default: {
      return _.merge(state, { error: '' })
    }
Другие вопросы по тегам