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

Ilj*_*lja 5 javascript asynchronous reactjs redux redux-promise

我很难搞清楚为什么会发生这种情况,但基本上Redux Promise对我来说很好,同时返回的内容如下:

    return {
      type: STORY_ACTIONS.STORY_SPOTIFY_REQUEST,
      payload: request
    }
Run Code Online (Sandbox Code Playgroud)

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

    return {
     order: 0, // New field
     type: STORY_ACTIONS.STORY_SPOTIFY_REQUEST,
     payload: request
    }
Run Code Online (Sandbox Code Playgroud)

这导致未解决的承诺而不是数据.我尝试重命名order为position或者index......仍然没有.

lar*_*ter 7

您应该使用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;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,有效密钥只有四个保留字.所以你应该将order属性添加到'payload'或者'meta'.