![](/img/trans.png)
[英]Adding a New Value to State is Overwriting Previous State in React Redux
[英]How to get the previous value of state in React Redux
我有这个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
器中的先前状态,以便每当我console.log
存在一个值。
这是代码codeandbox
先前状态存储在您的化简器中定义的state
变量中。 因此,可以通过state
变量在化简器中访问先前状态。
看来您有一个区块语法错误可能会导致您遇到问题(请参见下面的更正)。
另外,如果要在运行reduce时将以前的状态记录到控制台,请考虑将对console.log
的调用放在reduce的开头:
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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.