如果指定了多个类型和有效负载选项,为啥 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 重命名为 positionindex... 仍然没有。

【问题讨论】:

【参考方案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 效果不匹配,但实际和预期的有效负载相等

Redux Thunk操作,axios返回多个值

NextJS:使用“redux-observable”时,“HYDRATION”操作未接收服务器有效负载

带有 axios 返回多个值的 Redux Thunk 操作

Redux 中间件未调度新操作