Присвоение значения из состояния vuex в качестве начального значения для другого параметра - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть массив объектов в моем состоянии Vuex, и я хочу получить одно из его значений в качестве значения по умолчанию для другого параметра. В этом случае это для mainAccount:

Пример:

const store = new Vuex.Store({
  state: {
    AccountNums: [
      {
        label: 'Mister1',
        value: '1234567890'
      },
      {
        label: 'Mister2',
        value: '9876543210'
      }
    ],
   mainAccount: this.state.AccountNums[1].value   //this is where I want to use the val from the obj
}

Однако я получаю сообщение об ошибке:

Cannot read property 'state' of undefined

Когда я удаляю this ключевое слово, я получаю другую ошибку:

'state' is not defined  

Так как мне это сделать? Обратите внимание, что мне нужен этот AccountNums объект внутри моего состояния Vuex, так как многие будут получать доступ к этому объекту.

Спасибо!

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Эта проблема не является уникальной для Vuex. Каждый раз, когда вы определяете объект JavaScript, вы не можете ссылаться на другие свойства объекта внутри определения объекта. Вот почему вы получаете сообщения об ошибках - потому что вы ссылаетесь на объект внутри определения объекта.

Решение довольно простое. Определите массив AccountNums отдельно, а затем назовите его в своем хранилище. Как это:

const AccountNums = [
  {
    label: 'Mister1',
    value: '1234567890'
  },
  {
    label: 'Mister2',
    value: '9876543210'
  }
]

const store = new Vuex.Store({
  state: {
    AccountNums,
    mainAccount: AccountNums[1].value   //this refers to the const declared above
}
1 голос
/ 26 февраля 2020

Вы не можете ссылаться таким образом, потому что store еще не создан, есть обходной путь, объявив сначала ваш объект accountNums снаружи, и просто обратитесь к нему, как показано ниже

const accountNums = [
      {
        label: 'Mister1',
        value: '1234567890'
      },
      {
        label: 'Mister2',
        value: '9876543210'
      }
    ];
const store = new Vuex.Store({
  state: {
    AccountNums: accountNums,
   mainAccount: accountNums[1].value   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...