如果指定了多个类型和有效负载选项,为什么 Redux Promise 会返回未解析的Promise?

IT技术 javascript asynchronous reactjs redux redux-promise
2021-05-26 20:43:01

我很难弄清楚为什么会发生这种情况,但本质上 Redux Promise 在返回以下内容时对我来说很好用:

    return {
      type: STORY_ACTIONS.STORY_SPOTIFY_REQUEST,
      payload: request
    }

但是,我现在需要像这样传递另一个信息

    return {
     order: 0, // New field
     type: STORY_ACTIONS.STORY_SPOTIFY_REQUEST,
     payload: request
    }

这导致未解决的Promise而不是数据。我尝试重命名order为类似positionindex......仍然没有。

1个回答

您应该使用metaRedux Promise 所需字段。Redux Promise 使用 Flux 标准操作 (FSA),它使用以下代码验证操作

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 属性添加到“有效负载”或“元”中。