我有这个reducer
import { FETCH_WEATHER } from "../actions/index";
export default function(state = [], action) {
switch (action.type) {
case FETCH_WEATHER:
console.log(state)
return [action.payload.data,...state];
default:
return state
}
}
但是每当我console.log 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,
}
}
我正在考虑创建一个常量以保存数据的整体并将其传递给reducer,但我认为这不是正确的方法。
问题:
如何访问化简器中的先前状态,以便每当console.log
时都有一个值。
这是代码codesandbox
答案 0 :(得分:1)
先前的状态存储在您的state
变量中,如您的化简中所定义。因此,可以通过state
变量在化简器中访问先前状态。
您似乎有一个块语法错误,可能会导致您遇到问题(请参见下面的更正)。
此外,如果要在运行化简器时将以前的状态记录到控制台,请考虑在化简器的开头放置对console.log
的调用:
import { FETCH_WEATHER } from "../actions/index";
export default function(state = [], action) {
// console.log(state) // Add this to log previous state for every call to reducer
switch (action.type) {
case FETCH_WEATHER: { // Added { here
console.log(state)
return [action.payload.data,...state];
} // Added } here
default:
return state
}
}