Попытка отфильтровать элементы из моего состояния, которые вложены в мой редуктор - PullRequest
0 голосов
/ 05 сентября 2018

Мое состояние выглядит примерно так:

{     
 "account":{  
    "id":7,    
    "categories":[  
       {  
          "id":7,          
          "products":[  
             {                  
                "productId":54                
             }
          ]
       },
       {  
          "id":9,          
          "products":[  
             {                  
                "productId":89                
             }
          ]
       }
    ]
 }
}

Теперь в моих редукторах я могу вернуть текущее состояние, например:

return {...state}

Я могу установить новое значение для учетной записи, например:

return { ...state, account: action.account }

Но как мне отфильтровать гнездовой элемент из коллекции?

Если я это сделаю, мой фильтр возвращает категории назад, что неправильно, так как я хочу вернуть учетную запись:

return {...state, account: state.account.categories.filter((c) => c.id === 4)}

Если я делаю вышеупомянутое, вместо того, чтобы иметь значение учетной записи, я теперь настроил учетную запись на набор категорий.

Может ли кто-нибудь объяснить мне, как я могу продвинуться на один уровень глубже, т.е. Установите новое значение учетной записи, отфильтровав коллекцию вложенных категорий.

1 Ответ

0 голосов
/ 05 сентября 2018

Проблема, с которой вы столкнулись, заключается в том, что вы отключаете исходный источник данных и поэтому не можете применить другой фильтр, поскольку исходные данные потеряны. Чтобы это исправить, я бы посоветовал вам создать новое поле для хранения выбранной категории.

return {
  ...state,
  account: {
    ...state.account, 
    selectedCategory: state.account.categories.find((c) => c.id === action.categoryId)
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...