第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

調(diào)度新的 redux 操作時(shí)如何正確刪除對(duì)象子字段?

調(diào)度新的 redux 操作時(shí)如何正確刪除對(duì)象子字段?

慕斯王 2023-07-29 16:04:17
我想知道刪除 redux 操作中的嵌套字段的正確方法是什么。例如,我有這樣的代碼:const SUBSCRIBE = 'SUBSCRIBE';const UNSUBSCRIBE = 'UNSUBSCRIBE';export default function reducer(state = {}, action) {  const {    productName,    products,    componentName  } = action;  switch (action.type) {    case UNSUBSCRIBE: {      if (state[productName]?.[componentName]) {        const newState = { ...state };        delete newState[productName][componentName];        return newState;      } else {        return state;      }    }    default:      return state;  }}export function unsubscribe(productName, componentName) {  return {    type: UNSUBSCRIBE,    productName,    componentName  };}在UNSUBSCRIBE操作中,我刪除了newState[productName][componentName]字段,但這也將刪除“舊”狀態(tài)的字段。因此,從理論上講,如果有其他操作使用該字段,則它們可能會(huì)丟失,因?yàn)闋顟B(tài)已發(fā)生突變。我應(yīng)該將舊狀態(tài)深度復(fù)制到newState然后刪除嗎newState[productName][componentName]?
查看完整描述

1 回答

?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊

您可以執(zhí)行以下兩項(xiàng)操作之一:


創(chuàng)建狀態(tài)的副本并從該副本中productName刪除componentName

if (state[productName]?.[componentName]) {

  const newProductState = { ...state[productName] };

  delete newProductState[componentName];

  return {

    ...state,

    [productName]: newProductState

  };

} else {

  return state;

}

您可以將其標(biāo)記為未定義,而不是刪除componentName(我個(gè)人更喜歡這樣做)

if (state[productName]?.[componentName]) {

  return {

    ...state,

    [productName]: {

      ...state[productName],

      [componentName]: undefined,

    },

  };

} else {

  return state;

}


查看完整回答
反對(duì) 回復(fù) 2023-07-29
  • 1 回答
  • 0 關(guān)注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)