最近我为一个应用程序做了这个,我想知道这是否会被认为是一种不好的做法,或者它是否可以。假设我有一个 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_ACTION
,则代码将引发错误。
好的,所以这工作得很好。正如我所说,我担心这是否会被认为是一种糟糕的模式。为什么我会这么认为?因为isAllowed
状态部分是 reducer 内部的,它不会影响任何组件的渲染方法。