如何将Redux操作拆分为多个文件

时间:2017-02-01 00:26:23

标签: redux

我有一个actions文件夹,其中包含我的操作类型常量的常用types.js文件,以及执行以下操作的index.js文件

select employee_id, months_between(start_date, sysdate) 
from job_history;

并为我的所有操作导出函数。我想知道,有没有办法我可以创建多个文件来定义我的动作,所以index.js不会变得太长,然后将它们导入我的index.js所以在我的组件中我仍然只能做例如{{ 1}}而不必担心动作来自哪个文件?

3 个答案:

答案 0 :(得分:45)

假设您有以下目录结构

@Override
public void afterProcess(T item, S result) {
  //Do nothing
}

@Override
public void onProcessError(T item, Exception e) {
    setSkipCount(skipCount + Cons.number.ONE);
        toInt = Integer.valueOf(lineCount);
        int allLines = toInt + skipCount - Cons.number.ONE;
        logger.info("NumbersOfErrorLine :" + allLines);
        logger.info("NumbersOfSkipCount :" + skipCount);
    setLineCount(Cons.number.ZERO);
}`

actions / index.js 中,写一下:

actions/
  index.js
  types.js
  ProductActions.js

然后将 ProductActions.js 定义为:

export * from './ProductActions';

请记住还要使用新的操作类型文件更新您的Reducer:

import axios from 'axios';
import { ... } from './types';

export const fetchProducts = () => { ... };
export const deleteProduct = () => { ... };

答案 1 :(得分:5)

比如说我们有两个动作文件; actionsA和ActionsB。 假设在actionsA中我们有以下动作函数。

//actionsA

//You can import your actionTypes here
export function functionActionsA1(){ /* action body ActionsA1 */}

export function functionActionsA2(){ /* action body ActionsA2 */}

在actionsB中我们有以下代码:

//actionsB

//You can import your actionTypes here

export function functionActionsB1(){ /* action body ActionsB1 */}

export function functionActionsB2(){ /* action body ActionsB2 */}

假设我们有一个包含这两个文件的文件夹操作; actionsA和actionsB,以及index.js文件。

actions/ 
   index.js
   actionsA.js
   actionsB.js

在index.js文件中,我们从actionsA和actionsB导入不同的操作,然后导出导入的函数。

//index.js
import {functionActionsA1, functionActionsA2 } from './actionsA'
import {functionActionsB1, functionActionsB2} from './actionsB'

export functionActionsA1
export functionActionsA2
export functionActionsB1
export functionActionsB2

现在您只需导入索引文件并获取您想要使用的操作,如下所示:

import {functionActionsA1,functionActionsB2} from '../../actions/index'

答案 2 :(得分:0)

下面以cdaiga为例,我想在这里添加一些内容,

//actionsA

//You can import your actionTypes here
export function functionActionsA1(){ /* action body ActionsA1 */}

export function functionActionsA2(){ /* action body ActionsA2 */}

,在actionB中,我们有以下代码:

//actionsB

//You can import your actionTypes here

export function functionActionsB1(){ /* action body ActionsB1 */}

export function functionActionsB2(){ /* action body ActionsB2 */}

假设我们有一个包含两个文件的文件夹操作; actionsA和actionsB,以及index.js文件。

actions/ 
   index.js
   actionsA.js
   actionsB.js

在index.js文件中,我们从actionA和actionsB导入不同的动作,然后导出导入的函数。

//index.js
import * as actionsA from './actionsA'
import * as actionsB from './actionsB'

export {actionsA ,actionsB}

现在,您只需导入索引文件并获得要使用的操作,如下所示:

import {actionsA} from '../../actions/index';

将其用作-如果要使用方法functionActionsA1

actionsA.functionActionsA1()