Нормально ли нормализовать состояние отношений путем индексирования по одним и тем же идентификаторам в разных редукторах?

#redux #flux #state-management

Вопрос:

Допустим, у нас есть Posts и Tags это выглядит так:

 posts: [{  id: 1,  title: 'post 1',  tags: [  { id: 1, text: 'tag1' },  { id: 2, text: 'tag2' }  ], }]  

В обычном методе нормализации это выглядело бы так:

 posts: {  byId: {  1: {  id: 1,  title: 'post1',  tags: [1, 2], // lt;=== The list of tag ids is inside the post  }  },  allIds: [1] }  postTags: {  byId: {  1: { id: 1, text: 'tag1' },  2: { id: 2, text: 'tag2' }  } }  

Но это значит, что posts редуктор знает о tags существовании, а ведь — пост может жить и без тегов.

Поэтому я подумал о том, чтобы хранить его таким образом:

 posts: {  byId: {  1: {  id: 1,  title: 'post1',  // No tags here  }  },  allIds: [1] }  postTags: {  byId: {  1: { id: 1, text: 'tag1' },  2: { id: 2, text: 'tag2' }  },  tagIdsByPostId: {  1: { tags: [1, 2] } // lt;=== tags/post relation is here  } }  

Таким образом, в будущем, когда у поста также будет authors , comments , shares и т. likes Д. — Каждая функция будет иметь свой собственный редуктор , не касаясь основного posts редуктора.

Я не смог найти ни одной статьи, пропагандирующей это. Это плохая практика? В чем заключаются недостатки?