我正在开发一个应用程序,它使用react
作为前端,redux
用于状态管理。
在这个应用程序中我有一个reducer
,存储用户的当前状态的存在。所以无论用户是在线还是离线。我正在使用useSelector hook
获取用户的当前状态。
我的问题是如何获得以前的值存储在userStatus
对象。
reducer.js
import * as actionTypes from "../actions/types";
import { combineReducers } from "redux";
const initialState = {
userStatus: { value: "unavailable", label: "Offline" },
};
const user_reducer = (state = initialState, action) => {
switch (action.type) {
case actionTypes.SET_USER_STATUS:
return {
...state,
userStatus: action.payload,
};
default: {
return state;
}
}
};
const rootReducer = combineReducers({
user: user_reducer,
});
export default rootReducer;
//获取用户当前状态
const userPresence = useSelector((state) => state.user.userStatus);
的例子:
current State `userStatus: { value: "unavailable", label: "Offline" }`
previous state userStatus: { value: "available", label: "Online" }
我怎样才能得到之前的状态
在回家的更新状态后,使用useEffect
回来的状态变化和保存状态在一些当地的状态。在这种情况下,当redux状态更新时,将把以前的状态存储在本地
function Component(props){
const userPresence = useSelector((state) => state.user.userStatus);
const [userLocal, setUserLocal] = useState(null)
useEffect(()=>{
// here you have access to previous state(userLocal) and current
// state(userPresence)
setUserLocal(userPresence)
},userPresence)
}