化简器不导入操作类型常量



我有一个根化简器,它从另一个文件导入操作类型常量。当由于创建存储而首次调用化简器时,这些常量的值是未定义的。

我尝试将这些常量转换为函数,但它给了我错误 - "对象不能是函数"。当我打印它的类型时,它最初给了我未定义,但后来调用打印了type-函数。

我的目录结构是这样的

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

每个索引.js文件的类型是

export * from './rootReducer'

这是我的存储文件(存储.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))
)

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

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

这是我的根化简器(根化简器.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
}
}

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

为了总结注释中的讨论,您可以直接从化简器中的constants.js导入,同时调查您拥有的文件结构。

最新更新