У меня есть этот reducer
import { FETCH_WEATHER } from "../actions/index";
export default function(state = [], action) {
switch (action.type) {
case FETCH_WEATHER:
console.info(state)
return [action.payload.data,...state];
default:
return state
}
}
но всякий раз, когда я console.info state, результат всегда undefined
а вот и мой action
import axios from 'axios';
const API_KEY = '...';
const ROOT_URL = `...`
export const FETCH_WEATHER = 'FETCH_WEATHER';
export function fetchWeather(city){
const url = `${ROOT_URL}&q=${city},us`;
const request = axios.get(url)
return {
type : FETCH_WEATHER,
payload: request,
}
}
Я думаю создать константу для хранения данных в целом и просто передать ее в редуктор, но я не думаю, что это правильный подход.
Вопрос:
Как я могу получить доступ к предыдущему состоянию в редукторе, чтобы всякий раз, когда я console.info, было значение.
Вот код коды
@AlexanderStaroselsky Я не использую redux-thunk
Вы читали ссылку для создания асинхронного действия на документацию по сокращению? По сути, вам понадобится какое-то промежуточное программное обеспечение, чтобы отложить отправку действий до тех пор, пока вызов API не будет выполнен / разрешен.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Предыдущее состояние сохраняется в вашей переменной state, как определено в вашем редукторе. Таким образом, предыдущее состояние может быть доступно в вашем редукторе через переменную state.
Похоже, у вас есть синтаксическая ошибка блока, которая может вызывать проблемы (см. Исправление ниже).
Кроме того, если вы хотите записывать предыдущее состояние в консоль при запуске вашего редуктора, рассмотрите возможность размещения вызова console.info в начале вашего редуктора:
import { FETCH_WEATHER } from "../actions/index";
export default function(state = [], action) {
// console.info(state) // Add this to log previous state for every call to reducer
switch (action.type) {
case FETCH_WEATHER: { // Added { here
console.info(state)
return [action.payload.data,...state];
} // Added } here
default:
return state
}
}
в чем ошибка? чего вы ждете?
В консоли нет ошибки. Я пытаюсь получить доступ к предыдущему значению в состоянии, но он всегда возвращает undefined
вызывается ваш редуктор? с ожидаемой полезной нагрузкой? добавьте console.info(state) в начало редуктора - что он печатает?
Вы используете redux-thunk или что-то подобное для обработки этого асинхронное действие?