如果指定了多个类型和有效负载选项,为啥 Redux Promise 会返回未解决的承诺?
Posted
技术标签:
【中文标题】如果指定了多个类型和有效负载选项,为啥 Redux Promise 会返回未解决的承诺?【英文标题】:Why does Redux Promise return unresolved promise if more than type and payload options are specified?如果指定了多个类型和有效负载选项,为什么 Redux Promise 会返回未解决的承诺? 【发布时间】:2016-05-23 13:27:42 【问题描述】:我很难弄清楚为什么会发生这种情况,但基本上 Redux Promise 对我来说工作正常,同时返回如下内容:
return
type: STORY_ACTIONS.STORY_SPOTIFY_REQUEST,
payload: request
但是,我现在需要像这样传递另一个信息
return
order: 0, // New field
type: STORY_ACTIONS.STORY_SPOTIFY_REQUEST,
payload: request
这会导致未解决的承诺而不是数据。我尝试将 order
重命名为 position
或 index
... 仍然没有。
【问题讨论】:
【参考方案1】:您应该使用 Redux Promise 所需的 meta
字段。 Redux Promise 使用 Flux 标准操作 (FSA),它验证操作 with this code:
import isPlainObject from 'lodash.isplainobject';
const validKeys = [
'type',
'payload',
'error',
'meta'
];
function isValidKey(key)
return validKeys.indexOf(key) > -1;
export function isFSA(action)
return (
isPlainObject(action) &&
typeof action.type !== 'undefined' &&
Object.keys(action).every(isValidKey)
);
export function isError(action)
return action.error === true;
如您所见,有效键只有四个保留字。所以你应该将 order 属性添加到“payload”或者“meta”中。
【讨论】:
在meta: order: index
中传递我需要的一切工作,谢谢以上是关于如果指定了多个类型和有效负载选项,为啥 Redux Promise 会返回未解决的承诺?的主要内容,如果未能解决你的问题,请参考以下文章
如果 `redux` 不在 package.json 或 package-lock.json 或 node_modules 中,为啥从 'redux' 导入任何东西仍然有效?
redux-saga-test-plan put 效果不匹配,但实际和预期的有效负载相等
NextJS:使用“redux-observable”时,“HYDRATION”操作未接收服务器有效负载