установить порядок динамически зарегистрированных модулей - PullRequest
0 голосов
/ 23 мая 2018

В моем приложении у меня есть одна основная модель, назовем их users.У меня есть модуль users и подмодуль внутри него, который называется list.

При использовании конечной точки API я возвращаю 10 пользователей в виде массива пользователей.Для каждого пользователя я динамически регистрирую модуль user для каждого модуля list в users, используя id в качестве ключа.

this.registerModule(['users', 'list', user.id], UserModule);

Затем отправляю некоторые действия для гидратацииданные в моем магазине.Это все отлично работает.

У меня есть геттер, который анализирует модуль list (объект, который содержит id как ключи, указывающие на user) в массив пользователей.Это выглядит примерно так:

users: (state) => {
  const users = Object.keys(state.list).map(key => state.list[key]);
  return users;
}

Проблема

Когда vuex динамически регистрирует отдельных UserModule, он упорядочивает их в модуле list по алфавиту, а не по порядку.в котором модули регистрируются.Это проблема, потому что я хочу, чтобы массив пользователей был в том же порядке, в котором они поступают из API.

Пример

Если конечная точка возвращает 2 пользователей, таких как:

[
  { id: '3', name: 'Bob'},
  { id: '1', name: 'Tom'}
]

Тогда модуль списка будет выглядеть следующим образом:

state: {
  list: {
    1: { id: '1', name: 'Tom'},
    3: { id: '3', name: 'Bob'}
  }
}

И получатель users вернет:

[
  { id: '1', name: 'Tom'},
  { id: '3', name: 'Bob'},
]

Моё предварительное решение - ввестиСвойство order добавляется в каждый модуль по мере его использования, а затем сортируется в получателе по этому свойству order.Это не очень хорошо, потому что я чувствую, что добавляю цикл для сортировки без причины.

Вопросы

  1. Есть ли способ заказать динамически регистрируемые модули, так как онивходить, а не в алфавитном порядке по ключу?
  2. Кто-нибудь может придумать лучшее решение для этой проблемы, кроме введения свойства "order"?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...