【发布时间】:2018-02-23 11:06:07
【问题描述】:
在 redux 中,如何根据作为字符串传递给 action-creator 的 api 调用动态地制作 reducer,以减少样板文件(因此对于每个 api 调用,商店内都有一个专用键)? 我什至应该尝试这样做吗?
例如jsfiddle
问题出在这里:
export function universalFetchReducer(state = initialState, action) {
switch (action.type) {
case 'FETCHING_DATA' + action.metadata:
return {
...state,
isFetching: true
};
case 'FETCHING_DATA_SUCCESS' + action.metadata:
return {
...state,
isFetching: false,
data: action.data,
dataFetched: true
};
case 'FETCHING_DATA_FAILURE' + action.metadata:
return {
...state,
isFetching: false,
error: true
};
default:
return state;
}
}
现在我可以根据传递给动作创建者的 url 创建动作及其名称,但不能制作专用的减速器。
【问题讨论】:
-
您想要一个 reducer 来处理所有从 api 请求数据的操作?
-
@Galupuf 是的,但不完全是,我想为每个单独的 api 调用创建一个专用的减速器(动作名称和减速器函数/存储对象基于调用名称/元数据)并将其注册到商店。如果那是常见的事情,以某种 lib、npm 包等的形式。我认为为每个 api 调用创建一个 action/action-creator/reducer 有点多余,因为它每次只是一个唯一的调用。我只找到了动态存储代码拆分的解决方案,但这是另一种情况。如果这是一个不好的做法,那么我会继续前进。
标签: reactjs ecmascript-6 redux