#javascript #redux
#javascript #redux
Вопрос:
Меня наняли, чтобы внести несколько функций и исправлений в существующее приложение. Есть несколько строк кода, которые меня смущают.
Действие, отправленное в компоненте:
export function getCategory() {
const request = axios({
method: "get",
url: url,
}).then(response => {
return {
data: response.data.results,
};
})
console.log(1, request)
return {
type: types.GET_CATEGORY,
payload: request,
};
}
и редуктор:
export default function(state = initialState, action) {
switch (action.type) {
case GET_CATEGORY:
console.log(2, action.payload)
return {
...state,
category: action.payload.data
};
...
Я ожидал, что у меня будет неразрешенное обещание в обоих console.log 1 и 2.
На самом деле console.log 1 печатает разрешенное обещание, а console.log 2 печатает данные, полученные с сервера.
Redux работает синхронно, и в функции getCategory нет ключевых слов async / await. Почему reducer получает правильные данные, а не неразрешенное обещание?
Подробности о приложении: react-native, redux только с промежуточным программным обеспечением thunk.
(пожалуйста, не давайте мне советов о thunks, сагах и т. Д. Это не мой код)
Редактировать
Проблема решена, другой программист добавил промежуточное программное обеспечение redux-promise, и я не был добавлен в обзор…
Комментарии:
1. Должно быть что-то еще. Вы уверены в части «только промежуточного программного обеспечения»?
2. Задача Thunk — обрабатывать
async - await
. Thunk останавливает отправку действия до тех пор, пока не будет выполнено обещание, а затем отправляет действие с разрешенной полезной нагрузкой в редуктор.3. Боже @YuryTarabanko кто-то добавил промежуточное программное обеспечение redux-promise. Я этого не видел. Решаемая…