Используя @ ngrx / entity, как я могу обновить массив элементов - PullRequest
1 голос
/ 03 мая 2019

Я использую @ngrx/entity, и это создает состояние, которое выглядит следующим образом:

{
   ids: [1, 2, 3],
   entities: [
     1: {id:1, title: "Some title", likes: {count: 1}},
     2: {id:2, title: "Some title", likes: {count: 1}},
     3: {id:3, title: "Some title", likes: {count: 1}}
   ]
}

@ngrx/entity действительно дает нам несколько полезных помощников для обновления элемента, но кажется (из того, что яможно видеть только в документах), ограниченных только обновлением объекта WHOLE.

Однако, когда пользователь переключает кнопку «Мне нравится», я хотел бы в своем редукторе обновить только это свойство state.entities[2].likes с помощью ответа.

Есть идеи, как мне это сделать?

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Как ваше состояние неизменным. Вам необходимо обновить всю сущность. @ ngrx / entity поставляется с некоторыми помощниками, которые вы можете использовать для обновления 1 объекта. В вашем случае вам нужно использовать метод updateOne. https://ngrx.io/guide/entity/adapter

Это будет выглядеть примерно так:

adapter.updateOne(
{
  id: 2,
  changes: {...state.entities[2], likes: value}
},
state
);
0 голосов
/ 03 мая 2019

Вы можете внести изменения вручную как упоминание @Remi или использовать метод map:

 const newState = adapter.map(
      book =>
        book.title === TheGreatGatsby.title
          ? { ...book, name: 'foo' }
          : book
      state
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...