【发布时间】:2016-04-01 12:31:43
【问题描述】:
最近我为一个应用程序这样做了,我想知道这是否会被视为不好的做法,或者是否可以。假设我有一个 reducer 监听两个动作:
switch (action.type) {
case 'PRE_FETCH_ACTION':
return Object.assign({}, state, {value: action.value, isAllowed: true})
case 'FETCHED_SUCCESS':
if (!state.isAllowed) {
throw Error('You did not dispatch PRE_FETCH_ACTION before fetching!');
}
return Object.assign({}, state, {data: action.data, isAllowed: false})
}
所以流程是:
- 我发送
PRE_FETCH_ACTION - 我对外部 API 进行 fetch 调用
- 当服务响应返回时,它调度
FETCHED_SUCCESS
如果有人尝试在不分派PRE_FETCH_ACTIONfirst 的情况下获取数据,代码将抛出错误。
好的,所以这很好用。正如我所说,我担心这是否会被认为是一种糟糕的模式。为什么我会这么认为?因为 isAllowed 状态是 reducer 内部的,它不会影响任何组件的渲染方法。
【问题讨论】:
-
如果它不会破坏应用程序,我会简单地忽略与当前状态无关的操作,例如
FETCHED_SUCCESS。您可以显示警告,因为等待甚至没有启动的请求完成是设计疏忽,但我当然不会throw。
标签: javascript reactjs redux react-redux