Почему Redux Promise возвращает неразрешенное обещание, если указано больше, чем тип и параметры полезной нагрузки?
Мне трудно понять, почему это происходит, но, по сути, 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 ответ
Решение
Вы должны использовать meta
поле, обязательное для Redux Promise. Redux Promise использует Flux Standard Actions (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 в "payload" или, возможно, "meta".