Как получить предыдущее значение состояния в React Redux

У меня есть этот 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, было значение.

Вот код коды

Вы используете redux-thunk или что-то подобное для обработки этого асинхронное действие?

Alexander Staroselsky 15.08.2018 06:07

@AlexanderStaroselsky Я не использую redux-thunk

ajbee 15.08.2018 06:18

Вы читали ссылку для создания асинхронного действия на документацию по сокращению? По сути, вам понадобится какое-то промежуточное программное обеспечение, чтобы отложить отправку действий до тех пор, пока вызов API не будет выполнен / разрешен.

Alexander Staroselsky 15.08.2018 15:42
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
5 773
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предыдущее состояние сохраняется в вашей переменной 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
  }
}

в чем ошибка? чего вы ждете?

Dacre Denny 15.08.2018 05:53

В консоли нет ошибки. Я пытаюсь получить доступ к предыдущему значению в состоянии, но он всегда возвращает undefined

ajbee 15.08.2018 05:54

вызывается ваш редуктор? с ожидаемой полезной нагрузкой? добавьте console.info(state) в начало редуктора - что он печатает?

Dacre Denny 15.08.2018 05:57

Другие вопросы по теме