【问题标题】:Redux combineReducers() isn't recognising stateRedux combineReducers() 无法识别状态
【发布时间】:2020-12-20 15:54:40
【问题描述】:

我正在使用 redux combineReducers() 来组合 2 个减速器。虽然它们都在开发工具中被识别,但其中一个只是一个空对象,即使我将具有不同属性的对象传递给 reducer。

combineReducers() 文件:

import { combineReducers } from 'redux'
import { default as JobReducer } from './Jobs/reducer'
import { default as AuthReducer } from './Auth/reducer'

const RootReducer = combineReducers({
    job: JobReducer,
    auth: AuthReducer,
})

export default RootReducer

第一个减速器:

import { SINGLE_JOB_POST_SUCCESS } from './constants'

const initial = {
    jobs: [],
    job: {}
}

export default (state = initial, action) => {
    const { type, payload } = action
    switch (type) {
        case SINGLE_JOB_POST_SUCCESS:
            return {
                ...state,
                jobs: [
                    ...state.jobs,
                    ...payload
                ]
            }
        default:
            return {}
    }
}

第二个减速器:

import { RESET_AUTH_RESPONSE } from './constants'

const initial = {
    authResponse: null,
    user: {}
}

export default (state = initial, action) => {
    const { type, payload } = action
    switch (type) {
        case RESET_AUTH_RESPONSE:
            return {
                ...state,
                authResponse: null
            }
        default:
            return state
    }
}

当我在 redux 开发工具中查看状态时,“auth”具有相关属性,但“job”只是一个空对象。我已经为减速器文件命名了不同的名称,以消除对别名的需求,但它没有任何效果。任何帮助表示赞赏。

【问题讨论】:

    标签: reactjs redux reducers redux-reducers


    【解决方案1】:

    因为你的authReducer 有:

            default:
                return {}
    

    所以,只要它看到一个它无法识别的动作,它就会返回一个空对象。您需要改为 return state

    另外,请注意您应该改用our official Redux Toolkit package,这将大大简化您的 Redux 逻辑。

    【讨论】:

      猜你喜欢
      • 2019-01-19
      • 2019-12-03
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      相关资源
      最近更新 更多