Какая архитектура лучше всего подходит для такой ситуации? - PullRequest
0 голосов
/ 25 января 2019

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

Представьте себе 3 просмотра:

1) Отображение списка папок (выборка из API, поэтому у меня есть один редуктор для этой сущности).

2) Отображение сведений об одной папке. В нем есть список другой сущности: кошки. Также у вас есть форма фильтра для кошек.

3) Отображение списка кошек (разница между вторым представлением заключается в том, что вы не находитесь в деталях папки). У вас тоже есть фильтр для кошек.

Как я могу управлять состоянием кошек на втором и третьем видах? Должен ли я создать действие «GET_CATS_FOR_FOLDER» для второго представления и другое действие «GET_CATS» для третьего (я полагаю, это не очень хорошая практика)? Должен ли я найти решение для одного действия для управления обоими? Тот же вопрос для формы фильтра, которая влияет на состояние кошек ...

Ты заранее!

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Не могли бы вы просто создать различные селекторы, которые объединяют данные, как вам нужно?

export const getFolders = createSelector(...);

export const getFolder = createSelector(...);

export const getFolderWithCats = createSelector(...);

export const getCats = createSelector(...);
0 голосов
/ 25 января 2019

Я не знаю, почему вы все это усложните редукторами, штатами, магазинами и тому подобным.

Создание службы (синглтон, если вы хотите сохранить состояние)

@Injectable()
export class MyService() {
  folders: { name: string, id: string, cats: any[] }[];

  constructor(private http: HttpClient) {
    this.http.get('api/folders').subscribe(folders => this.folders = folders);
  }
}

Теперь вы можете просто использовать маршрутизатор для отображения ваших представлений и получения идентификаторов из вашего URL-адреса в следующем виде: /#/folders/10/cats/12.

...