Нужно написать редуктор для добавления нового элемента идеи с несколькими объектами - PullRequest
0 голосов
/ 09 марта 2019

Не могу понять, как добавить новый элемент идеи с несколькими объектами страницы. Кроме того, когда я добавляю новый элемент идеи с уникальным идентификатором ... мне также необходимо объединить объекты страницы с существующим элементом идеи. Как бы я отфильтровал с помощью оператора распространения, чтобы проверить, существует ли элемент идеи, тогда объекты конкатат страницы еще добавят новый элемент? Вот пример моих данных по умолчанию для структуры:

    ideaID1: { 0:{title:'first', desc:'abc'}
        1:{title:'second', desc:'lmn'}
        2:{title:'third', desc:'pqr'}
      }
    ideaID2: { 0:{title:'first', desc:'abc'}
        1:{title:'second', desc:'pqr'}
        2:{title:'third', desc:'lmn'}
      }

Сначала я хочу добавить ideaID1 (уникальный идентификатор), а затем получу 0, 1, 2 страницы для этой идеи, когда пользователь сохранит страницу. Поэтому мне нужно будет объединить эти страницы в зависимости от того, к какой идее они принадлежат. Может ли кто-нибудь помочь мне с редуктором, используя оператор распространения, чтобы добавить новую идею, а затем добавить страницы к этому элементу идеи, если он существует ... если не создать новое?

Я получаю следующую полезную нагрузку и записал следующий редуктор

    {ideaID: 1, pagePostion: 0, title:'any', desc: 'abc'}

    {ideaID: 1, pagePostion: 1, title:'any', desc: 'per'}
    case 'ADD_IDEA': 
    return {
    ...state,
    [action.payload.ideaid]:{

        [action.payload.pagePosition]: [...action.payload]
}
  }

Как мне соединить вторую полезную нагрузку, а также проверить, существует ли ideaID, и затем присоединиться к ней:

     return { ...state, { ...state[action.ideaid], 
     [action.payload.pagePosition]: [...action.payload] } }

А что, если ideaID не найден?

1 Ответ

0 голосов
/ 09 марта 2019

Рассматриваете ли вы использовать lodash/fp? Это создаст карты / массивы, если они не существуют. Вы должны будете использовать массивы для своих страниц, как рекомендовано в комментариях.

import { set } from 'lodash/fp'

return set(
  [action.ideaid, action.payload.pagePosition],
  action.payload,
  state
)

https://gist.github.com/jfmengels/6b973b69c491375117dc#_setpath-value-object

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...