我正在製作健身應用程序,並遇到一個我認爲不會太難解決的問題,但我一直在卡住。當用戶註銷時重置還原存儲/狀態
當用戶1註銷並且用戶2登錄時,用戶2將擁有用戶1的健身日誌,直到他們刷新頁面。這是因爲狀態在註銷時未清除鍛鍊日誌。
我試圖解決這個在我的sessionsReducer,但沒有成功。
我的想法,如果條件是如果currentUser爲空傳回空狀態。空值傳回我的註銷thunk行動。
我不知道我可以採取哪些其他行動創建者來幫助解決此問題。
我的減速器和註銷如下。
import merge from 'lodash/merge';
import { RECEIVE_CURRENT_USER, RECEIVE_ERRORS } from '../actions/session_actions'
const nullUser = Object.freeze({
currentUser: null,
errors: []
});
const sessionReducer = (state = nullUser, action) => {
Object.freeze(state);
let newState;
switch(action.type) {
case RECEIVE_CURRENT_USER:
if (action.currentUser === null) {
newState = merge({}, {});
} else {
newState = merge({}, state);
}
const currentUser = action.currentUser;
return merge({}, newState, {
currentUser
});
case RECEIVE_ERRORS:
const errors = action.errors;
return merge({}, nullUser, {
errors
});
default:
return state;
}
}
export default sessionReducer;
Thunk action creator。
export const logout =() => (dispatch) => {
return APIUtil.logout().then(() => dispatch(receiveCurrentUser(null)),
err => dispatch(receiveErrors(err.responseJSON)));
};
我想我正在清理錯誤的狀態片。如果這個方法有效,將會用解決方案報告。 –
可能重複[如何重置Redux商店的狀態?](https://stackoverflow.com/questions/35622588/how-to-reset-the-state-of-a-redux-store) –