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

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

將 React Context 恢復到默認狀態

將 React Context 恢復到默認狀態

牛魔王的故事 2021-11-04 15:24:31
我有一個 React Context 的默認狀態,如下所示:export const defaultState: UsersState = {  isModalOpen: false,  isCancelRequest: false,  companyId: 0,  users: []};當它使用的模式被取消時,我想將狀態清除回默認值。這有效:    case RESET_STATE: {      return {        ...state,        isModalOpen: false,        isCancelRequest: false,        companyId: 0,        users: []      };    }但這不會:    case RESET_STATE: {      return {        state: defaultState      };    }當上下文第一次被實例化時,這就是用戶的樣子:users: Array[0]但是當我使用后者的簡化方法來重置狀態時,它看起來像這樣:users: Array  (empty)至少,這就是我在 React DevTools 中看到的。為什么設置state為defaultState不恢復users為Array[0]?
查看完整描述

2 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

這個


case RESET_STATE: {

      return {

        state: defaultState

      };

    }

應該:


case RESET_STATE: {

      return {

       ...defaultState

      };

    }

state在您的上下文中沒有調用對象


查看完整回答
反對 回復 2021-11-04
?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

使用defaultState代替{state: defaultState}


像這樣。


    case RESET_STATE: {

      return defaultState;

    }

教程


const state = {

    isModalOpen: true,

    isCancelRequest: true,

    companyId: 123,

    users: ['1','2','3']

};


const defaultState: UsersState = {

  isModalOpen: false,

  isCancelRequest: false,

  companyId: 0,

  users: []

};


const getState1 = () => {

  return {

    ...state,

    isModalOpen: false,

    isCancelRequest: false,

    companyId: 0,

    users: []

  };

}


const getState2 = () => {

  return {

    state: defaultState

  };

}


const getState3 = () => {

  return defaultState;

}


console.log('this is goal state: ', getState1());

console.log('this is your state: ', getState2());

console.log('this is my state: ', getState3());


查看完整回答
反對 回復 2021-11-04
  • 2 回答
  • 0 關注
  • 246 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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