VueJS _ob_ Observer преобразовать в массив

Делаю запрос axios.

            axios.get('/api/dating-card/to-assess', {
                params: this.filters
            }).then(response => {
                response.data.datingCards.map(el => {
                    this.dating_cards.push(el);
                })
            });
            console.log(this.dating_cards);

При выводе console.log виден тип ob Observer. Скриншот вывода

Мне нужно чтобы это был обычный массив. Много читал про этот тип, якобы Vue преобразует все объекты в него для быстрого отображения. Также пробовал делать Json.parse(Json.stringify(this.dating_cards)). Но это просто выводит пустой массив. Объекты из ob Observer туда не попадают. Есть ли простой способ преобразовать это в массив или отменить автоматическое преобразование в обсервер от VueJS?


Ответы (1 шт):

Автор решения: Mikalai Parakhnevich

Observer - Это специальное свойство, добавленное Vue, это часть системы реактивности, которая позволяет Vue отслеживать изменения данных и реагировать на их изменения (Система реактивности).

Простое решение для избавления от системы реактивности от создателя Vue (Evan You) - использование: JSON.parse(JSON.stringify(...))

Рабочий пример для наглядности:

new Vue({
  el: '#app',
  data() {
    return {
      dating_cards: [],
      filters: {}
    }
  },
  mounted() {
    this.getData()
  },
  methods: {
    async getData() {
      await axios.get('https://jsonplaceholder.typicode.com/todos?_limit=5', {
        params: this.filters
      }).then(response => {
        response.data.map(el => {
          this.dating_cards.push(el);
        })
      });

      console.log(JSON.parse(JSON.stringify(this.dating_cards)));
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/1.0.0-alpha.1/axios.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<div id="app">
  <pre>
  {{dating_cards}}
</pre>
</div>

Открыв консоль разработчика в браузере (F12) вы можете наблюдать вывод обычного массива.

→ Ссылка