У меня есть следующие действия и редуктор:
действия:
import { OPEN_NODE, CLOSE_NODE, GET_NODES } from '../constants/NodeActionTypes';
export function openNode(path) {
return {
type: OPEN_NODE,
path: path
};
}
export function closeNode() {
return {
type: CLOSE_NODE
};
}
export function getNodes(path) {
return {
type: GET_NODES,
path: path
};
}
редуктор:
export default function opener(state = initialState, action) {
switch (action.type) {
case OPEN_NODE:
var { path } = action
var {nodes} = getFileList(path)
return {
...state,
open:true,
nodes:nodes
};
case CLOSE_NODE:
return {
...state,
open:false
};
case GET_NODES:
var { path } = action
var {nodes} = getFileList(path)
return {
...state,
nodes:nodes
};
default:
return state;
}
}
Очевидно, что OPEN_NODE
содержит GET_NODES
(только плюс open:true
), но кажется, что есть много способов организовать код:
упакуйте редюсер
GET_NODES
в функцию, вызовите его вOPEN_NODE
и добавьтеopen:true
.изменить действие
openNode
, отправить[OPEN_NODE, GET_NODES]
вместе, но как написать случайswitch(action.type)
?пусть
OPEN_NODE
редуктор отправит действиеgetNodes
для запускаGET_NODES
редуктора
что лучше? Или любой другой лучший способ?