Vuex - модель зависимости вложенных модулей - PullRequest
0 голосов
/ 05 июня 2018

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

Пользователь может войти в систему, а затем выбрать одно из многих рабочих пространств для подключения.Очевидно, что он не может подключиться к рабочему пространству, если он не вошел в систему. С этой зависимостью рабочей области у меня возникают проблемы.

Способ "грубой силы" сделать эту работу перед каждымдоступ к данным рабочей области, чтобы вручную проверить, вошел ли пользователь в систему. Однако эту проверку легко забыть, поэтому я хотел бы использовать такую ​​альтернативу:
Если я могу вложить рабочую область как свойство сеансаЯ мог бы заставить пользователей магазина проверить, присутствует ли сеанс, прежде чем они получат доступ к рабочему пространству (например, используя строгий режим TypeScript).

type State = {
  session?: {
    userInfo: {username: string},
    workspaceInfo: {workspaceId: string},
  }
}

При строгой настройке TypeScript будет предупреждать при доступе к state.session.workspaceInfo,не убедившись, что session определено.Это решение, которым я был бы доволен.

К сожалению, я не знаю, как представить это в Vuex, потому что я не могу «вкладывать» подмодуль в состояние или делать модуль «необязательным» вощущение, что оно может быть неопределенным.

Есть ли решение, которое моделирует эту зависимость в Vuex?

1 Ответ

0 голосов
/ 16 июля 2018

Проходя через аналогичную проблему к этому и попробуйте разные вещи из-за отсутствия очевидной документации по этой проблеме.Из экспериментов, похоже, работает следующий подход:

export interface RootState {
  moduleA: ModuleAState;
  moduleB: ModuleBState;
}

export interface ModuleAState {
  valueA: string;
}

export interface ModuleBState {
 valueB: string;
}

Это позволяет вам получить доступ к состоянию пространства имен с помощью state.moduleA.valueA

...