Reducer 不导入动作类型常量

Reducer not importing the action type constants

我有一个根减速器,它从另一个文件导入动作类型常量。由于createstore 第一次调用reducer时,这些常量的值是未定义的

我尝试将这些常量转换为函数,但出现错误 - "Object can not be function"。当我打印它的类型时,它最初给我未定义但后来调用打印类型函数。

我的目录结构是这样的

helpers/
 -index.js
 -store.js
 -constants.js

reducers/
 -index.js
 -rootReducer.js

每个 index.js 文件都是类型-

export * from './rootReducer'

这是我的商店文件(store.js)-

import { createStore, applyMiddleware, compose } from 'redux'
import { rootReducer } from '../reducers'
import ReduxThunk from 'redux-thunk'

const initialState = {}

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose
export const store = createStore(
    rootReducer,
    initialState,
    composeEnhancers(applyMiddleware(ReduxThunk))
)

这是我的常量文件(constants.js)-

export const constants = {
    BENCHMARK_DATA_RECEIVED: 'BENCHMARK_DATA_RECEIVED',
    BENCHMARK_DATA_FAILED: 'BENCHMARK_DATA_FAILED',
}

这是我的根减速器 (rootReducer.js)-

import { constants } from '../helpers'

export const rootReducer = (state = [], action) => {
    console.log(constants)
    // Initially print undefined
    // After that prints correct value

    switch (action.type) {
        case 'BENCHMARK_DATA_RECEIVED':
            return { ...state, benchmark_data: action.payload }
        default:
            return state
    }
}

我不确定是什么导致了这个问题,但它只会在第一次使用减速器时发生(很可能是在创建商店时)。我用谷歌搜索了很多,但没有遇到任何此类问题。也许我的设置有问题。也可以在任何地方打印这些常量(比如在 action creators 中)。

总结评论中的讨论,您可以直接从 constants.js 导入您的减速器,同时调查您的文件结构。