Vue машинопись ждут обещания - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь показать данные, полученные из запроса топора ios. Я понял, что Ax ios возвращает Обещание, и мне нужно ждать, поэтому он здесь не работает:

get categories(): Array<string> {
  let categories: Array<string> = []
  api.getORMJson().then((response) => {
    categories = response.data.nodes[0].nodes
    // Correct output
    console.log(response.data.nodes[0].nodes)
  })
  return categories
}

Я уже пробовал подход с Promise, но это тоже не сработало:

get categories(): Promise<Array<string>> {
  return new Promise<Array<string>>((resolve) => {
    api.getORMJson().then((response) => {
      resolve(response.data.nodes[0].nodes)
    })
  })
}

В конечном итоге я хочу, чтобы мои данные отображались в виде выбора, например, здесь:

<select>
  <option v-for="category in categories" :key="category" :value="category">
    {{ category }}
  </option>
</select>

РЕДАКТИРОВАТЬ: я уже приводил его в действие один раз, но очень грязно:

@Prop({ default: [], required: true })
public categories!: Array<string>

И получатель выглядит так:

get allCategories(): Array<string> {
  return this.categories
}

Проблема здесь в том, что я мутировал свойство непосредственно в mount-Function, которая выглядела так:

mounted() {
      api.getORMJson().then((response) => {
        this.categories = response.data.nodes[0].nodes
      })
  }

Тогда я мог бы легко перебрать все категории, и все заработало, но Vue дал мне заслуженную ошибку: "[Vue warn]: избегайте прямого изменения свойства, поскольку значение будет перезаписываться всякий раз, когда родительский компонент перерисовывает. Вместо этого используйте данные или вычисляемое свойство, основанное на значении реквизита. Мутирует реквизит: "category" "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...