如何在任何操作下重置(redux)reduce状态值?

时间:2018-11-04 15:28:21

标签: reactjs react-native redux react-navigation redux-persist

我想通过任何操作(即从任何模块分派但基本上是导航)重置存储在用户减速器上的错误消息。

我希望从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 :(得分:2)

也许您可以尝试类似的

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

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