javascript - Reducer 不导入 Action 类型常量

标签 javascript reactjs redux reducers

我有一个根 reducer ,它从另一个文件导入 Action 类型常量。当reducer第一次被createstore调用时,这些常量的值是未定义的。

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

我的目录结构是这样的

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',
}

这是我的根 reducer (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
    }
}

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

最佳答案

总结一下评论中的讨论,您可以直接从 constants.js 导入到您的 reducer 中,同时调查您拥有的文件结构。

关于javascript - Reducer 不导入 Action 类型常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57426723/

相关文章:

javascript - jquery toggleClass 不适用于 img 元素

javascript - 如何使过滤后的输入能够在其中进行编辑,而不是在最后进行?

javascript - 捆绑失败 : Error: Cannot find module 'babel-preset-react-native' from '/workspace/reactnative' '

javascript - React 列表项的虚拟化位置

ios - ReSwift - 在动画中间接收 Action

reactjs - React、Redux 和不可变

javascript - 从数据库中提取数据并显示在排行榜中

javascript - 如何将小数逗号替换为<input type ="number">中的一个点?

javascript - 输入输入值时如何正确使用 toFixed

javascript - 如何在react-redux中正确更新我的initialState