Иногда нам нужно глубоко наблюдать за массивом объектов и вычислять изменения с помощью Vue.js.

В этой статье мы рассмотрим, как глубоко наблюдать за массивом объектов и вычислять изменения с помощью Vue.js.

Глубокий просмотр массива объектов и расчет изменений с помощью Vue.js

Мы можем глубоко наблюдать за массивом объектов и вычислять изменения с помощью Vue.js с наблюдателями.

Например, мы можем написать:

App.vue

<template>
  <div id="app">
    <Person :person="person" v-for="person in people" :key="person.id"></Person>
  </div>
</template>
<script>
import Person from "@/components/Person";
export default {
  name: "App",
  components: {
    Person,
  },
  data() {
    return {
      people: [
        { id: 0, name: "Bob", age: 27 },
        { id: 1, name: "Frank", age: 32 },
        { id: 2, name: "Joe", age: 38 },
      ],
    };
  },
};
</script>

Person.vue

<template>
  <div class="hello">
    <div class="person">
      {{ p.name }}
      <input type="text" v-model="p.age" />
    </div>
  </div>
</template>
<script>
export default {
  name: "Person",
  props: {
    person: Object,
  },
  data() {
    return {
      p: {},
    };
  },
  watch: {
    p: {
      handler(newValue) {
        console.log(newValue.id);
        console.log(newValue.age);
      },
      deep: true,
    },
  },
  mounted() {
    this.p = { ...this.person };
  },
};
</script>

В App.vue у нас есть массив people, который используется для рендеринга компонента Person с помощью v-for.

Мы передаем person как значение реквизита person.

Затем в Person мы добавляем свойство props, чтобы принять свойство person.

И у нас есть реактивное свойство p, которое мы установили на копию person в качестве значения в хуке mounted.

В наблюдателе p в свойстве watch мы регистрируем значение newValue.

Мы устанавливаем для параметра deep значение true, чтобы позволить нам отслеживать изменения в объектах.

А в шаблоне мы рендерим p.name и привязываем p.age к входному значению ввода текста.

Теперь, когда мы вводим текст, должен запускаться наблюдатель p и регистрировать значение newValue.age.

Заключение

Мы можем глубоко наблюдать за массивом объектов и вычислять изменения с помощью Vue.js с наблюдателями.

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .