亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何重置Redux存儲的狀態?

如何重置Redux存儲的狀態?

HUWWW 2019-08-03 03:02:23
如何重置Redux存儲的狀態?我正在使用Redux進行州管理。如何將存儲重置為初始狀態?例如,假設我有兩個用戶帳戶(u1和u2).設想以下一系列事件:用戶u1登錄應用程序并做一些事情,所以我們在商店中緩存一些數據。用戶u1注銷。用戶u2登錄到應用程序而不刷新瀏覽器。此時,緩存的數據將與u1我想把它清理干凈。當第一個用戶注銷時,我如何將Redux存儲重置為它的初始狀態?
查看完整描述

3 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

我想指出的是,丹阿布拉莫夫接受的評論是正確的,但我們遇到了一個奇怪的問題,當使用的反應路由器-Redux包連同這種方法。我們的解決辦法是不將狀態設置為undefined而是仍然使用當前的路由減少器。因此,如果您正在使用這個包,我建議您實現下面的解決方案

const rootReducer = (state, action) => {
  if (action.type === 'USER_LOGOUT') {
    const { routing } = state
    state = { routing } 
  }
  return appReducer(state, action)}




查看完整回答
反對 回復 2019-08-05
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊


定義一個行動:

const RESET_ACTION = {
  type: "RESET"}

那么在每個減速機中,假設你使用的是switchif-else通過每個減速機處理多個動作。我要接這個案子switch.

const INITIAL_STATE = {
  loggedIn: true}const randomReducer = (state=INITIAL_STATE, action) {
  switch(action.type) {
    case 'SOME_ACTION_TYPE':

       //do something with it

    case "RESET":

      return INITIAL_STATE; //Always return the initial state

   default: 
      return state; 
  }}

只要你打電話就這樣RESET操作時,還原程序將以默認狀態更新存儲。

現在,對于注銷,您可以處理以下內容:

const logoutHandler = () => {
    store.dispatch(RESET_ACTION)
    // Also the custom logic like for the rest of the logout handler}

每次用戶登錄時,不需要刷新瀏覽器。商店總是默認的。

store.dispatch(RESET_ACTION)只是詳細闡述了這個想法。您很可能為此目的有一個動作創建者。一個更好的方法就是LOGOUT_ACTION.

一旦你發出這個LOGOUT_ACTION..然后,定制中間件可以使用Redux-Saga或Redux-Thunk攔截此操作。但是,無論是哪種方式,您都可以分派另一個動作“重置”。這樣,存儲、注銷和重置將同步進行,您的存儲將為另一個用戶登錄做好準備。




查看完整回答
反對 回復 2019-08-05
  • 3 回答
  • 0 關注
  • 311 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號