首页 > 解决方案 > React/Redux 应用程序中的导入问题

问题描述

我正在为 React/Redux 项目使用 Rails 风格的组织,但我遇到了一个我无法弄清楚的导入问题。

我有一个constants带有模块索引(index.js)的目录,如下所示:

import * as types from './ActionTypes';

export default types;

(我所有的动作创建者都在./ActionTypes。)

然后我有一个actions/index.js文件,我在其中导入了我的操作所需的所有常量(为简洁起见,我只包含了一个操作创建者):

import * as c from './../constants';

...

export const toggleForm = () => ({
  type: c.TOGGLE_FORM
});

我已经彻底测试了所有 reducer 和 action creators - 所有测试都通过了,没有导入问题。

但是,在我重构为使用动作创建器之前正在运行的 React 应用程序中,我遇到了以下问题,并且我的项目无法编译:Attempted import error: 'TOGGLE_FORM' is not exported from './../constants' (imported as 'c').

如果我指定应该导入常量(绕过我actions/index.jsimport * as c from './../constants/ActionTypes.js';常量目录的模块索引) - React 应用程序可以正确编译,但我的动作创建者的测试会中断。

我在这里想念什么?

标签: reactjsecmascript-6reduximportexport

解决方案


删除

import * as types from './ActionTypes';

export default types;

而是像这样将所有操作导出为 const

// user authentication actions
export const SET_USER = 'SET_USER'
export const CLEAR_USER = 'CLEAR_USER'
export const VERIFY_USER = 'VERIFY_USER'

它现在应该可以工作了


推荐阅读