簡體   English   中英

減速器看不到一個特定的動作[react-redux]

[英]Reducer can't see one particular action [react-redux]

你是我最后的希望。 我現在很沮喪

我剛剛將所有項目文件都放入了Github

這是我的問題。 在index.js文件中的actions文件夾內,我有兩個功能:

fetchLocation()fetchWeather()

當用戶輸入城市時,我的應用正在使用fetchLocation調度操作,並正在從Google Maps Api獲取數據。 ReduxPromise中間件將Promise更改為對象,並且一切正常。 我可以使用這些數據通過Google地圖在網站上顯示該城市。

現在我有了lat&lng,所以我將該數據與fetchWeather(lat,lng)一起使用 在actions / index.js內部,我的fetchWeather()函數正在運行,因為我在console.log中看到了數據。 使用新的緯度和緯度,它可以從api.wunderground獲取具有天氣預報的新數據。 而且我可以在console.log和request2里面看到這些數據。

這是此錯誤/奇怪的行為。 fetchWeather永遠不會像fetchLocation那樣表現。 我再也沒有回來

  return {
    type: FETCH_WEATHER,
    payload: request2
  };

reducer_weather.js永遠不會用開關案例FETCH_WEATHER觸發,而且我從未見過console.log('INSIDE!')。

我正在使用ReduxDevTootls,我的應用程序所做的所有事情都是通過位置減少器更新狀態,因此我可以擁有多張地圖,但是reducer_weather始終保持沉默。

你能告訴我為什么嗎?

這是我來自action / index.js的代碼。 我的其余代碼可以在這里找到: Github

import axios from 'axios';
export const FETCH_LOCATION = 'FETCH_LOCATION';
export const FETCH_WEATHER = 'FETCH_WEATHER';
const API_KEY_GOOGLE = 'AIzaSyDNMmI2f7qIcBnKgV1dYXmi995BY_8zoJM';
const API_KEY_WUNDERGROUND = 'cd8c7ea98a37877f';

export function fetchLocation(city) {
  const url = `https://maps.googleapis.com/maps/api/geocode/json?address=${city}&key=${API_KEY_GOOGLE}`
  const request = axios.get(url);
  console.log('request1: ', request);
  return {
    type: FETCH_LOCATION,
    payload: request
  };
}

export function fetchWeather(lat, lng) {
  console.log(lat, lng);

  const url = `https://api.wunderground.com/api/${API_KEY_WUNDERGROUND}/forecast10day/q/${lat},${lng}.json`;

  console.log(url);

  const request2 = axios.get(url);

  console.log('request2: ', request2);

  return {
    type: FETCH_WEATHER,
    payload: request2
  };
}

在此處輸入圖片說明

您必須dispatch動作。 但是,您只是將動作生成器稱為普通函數。

從您的倉庫中替換

fetchWeather(lat, lng);

this.props.fetchWeather(lat, lng);

由於您的actionCreators通過Redux Connectdispatch綁定。

更新: this不適用於Component類的用戶定義函數(不是默認的生命周期方法)。 因此,使用的脂肪箭頭功能es6訪問this里面自己的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM