在 redux thunk 中链接操作的正确方法?
Proper way of chaining operations in redux thunk?
我是第一次使用 redux thunk
。链接操作的正确方法是什么?
我想在给出用户输入后获取位置,并且当有来自 Google Maps API
的数据响应时,我想立即使用该数据获取该位置的天气。
Redux thunk
正在运行,但仅适用于第一次操作(获取位置)。
request2
中的 Data2
总是 undefined
,你能告诉我为什么吗?
export function fetchLocation(city) {
const urlGoogle = `https://maps.googleapis.com/maps/api/geocode/json?address=${city}&key=${API_KEY_GOOGLE}`;
const request = axios.get(urlGoogle);
return (dispatch) => {
request.then(({ data }) => {
dispatch({ type: FETCH_LOCATION, payload: data });
const lat = data.results["0"].geometry.location.lat;
const lng = data.results["0"].geometry.location.lng;
const urlWunder = `https://api.wunderground.com/api/${API_KEY_WUNDERGROUND}/forecast10day/q/${lat},${lng}.json`;
console.log(urlWunder); // Link is ok, it works in browser
const request2 = axios.get(urlWunder);
request2.then(({ data2 }) => {
console.log('Data2', data2); // Getting undefined, why ?
dispatch({ type: FETCH_WEATHER, payload: data2 });
});
});
};
}
很可能第二个请求没有返回名为 response.data2
的字段,因此当您解构它时,data2
将是未定义的。您可能仍需要查找名为 data
的字段,但为其指定不同的本地参数名称,例如:request2.then({data : data2})
.
我是第一次使用 redux thunk
。链接操作的正确方法是什么?
我想在给出用户输入后获取位置,并且当有来自 Google Maps API
的数据响应时,我想立即使用该数据获取该位置的天气。
Redux thunk
正在运行,但仅适用于第一次操作(获取位置)。
request2
中的 Data2
总是 undefined
,你能告诉我为什么吗?
export function fetchLocation(city) {
const urlGoogle = `https://maps.googleapis.com/maps/api/geocode/json?address=${city}&key=${API_KEY_GOOGLE}`;
const request = axios.get(urlGoogle);
return (dispatch) => {
request.then(({ data }) => {
dispatch({ type: FETCH_LOCATION, payload: data });
const lat = data.results["0"].geometry.location.lat;
const lng = data.results["0"].geometry.location.lng;
const urlWunder = `https://api.wunderground.com/api/${API_KEY_WUNDERGROUND}/forecast10day/q/${lat},${lng}.json`;
console.log(urlWunder); // Link is ok, it works in browser
const request2 = axios.get(urlWunder);
request2.then(({ data2 }) => {
console.log('Data2', data2); // Getting undefined, why ?
dispatch({ type: FETCH_WEATHER, payload: data2 });
});
});
};
}
很可能第二个请求没有返回名为 response.data2
的字段,因此当您解构它时,data2
将是未定义的。您可能仍需要查找名为 data
的字段,但为其指定不同的本地参数名称,例如:request2.then({data : data2})
.