Отношения «многие ко многим» в хранилище Redux

#reactjs #redux #relationship

#reactjs #redux #отношения

Вопрос:

Я создал отношения «многие ко многим» в Laravel и хочу создать хранилище с его помощью. Например, у меня есть этот код:

 const INITIAL_PEOPLE = {
    all: [
      {name: "John", city: "NY"}
    ]
}
 

У любых людей есть теги (многие ко многим отношениям). Лучшим способом для меня было бы, если бы мой магазин выглядел так (если у вас нет другой идеи, как я могу реализовать и отобразить элементы с этим отношением):

 const INITIAL_PEOPLE = {
    all: [
      {name: "John", city: "NY", tags: [id: 1, name: "new_tag"]}
    ]
}
 

Это пример, похожий на внешний вид хранилища, но только данные были сервером и добавлялись редукторами. Итак, как я могу создать эту структуру хранилища (или решить эту проблему другим способом) с помощью reducer?

Ответ №1:

Вы можете нормализовать объекты данных в api-response, прежде чем сохранять их в redux.

Вы можете сохранить данные следующим образом:

Предположение: для каждого человека существует уникальный идентификатор.

 ReduxStoreState:
{
   "people":{
      "id_1":{
         "id":"id_1",
         "name":"John",
         "city":"NY"
      },
      "id_2":{
         "id":"id_2",
         "name":"Matt",
         "city":"NJ"
      }
   },
   "tagsByPeople":{
      "id_1":[
         {
            "id":1,
            "name":"new_tag"
         }
      ]
   }
}
 

Теперь вы можете записывать selectors в теги выборки, предоставляя person-ID