Heim > Web-Frontend > View.js > Hauptteil

Einführung in die Composition API und ihre Kernverwendung in Vue3

藏色散人
Freigeben: 2021-12-10 15:04:56
nach vorne
2412 Leute haben es durchsucht

Kernverwendung der Composition API in Vue3

Was ist Composition API?

Composition API wird auch kombinierte API genannt, was eine neue Funktion in Vue3.x ist. Durch die Erstellung von Vue-Komponenten können wir die wiederholbaren Teile der Schnittstelle in wiederverwendbare Codesegmente extrahieren. Vor der Composition API musste Vue-bezogener Geschäftscode für einen bestimmten Bereich der Option konfiguriert werden Bei großen Projekten wird es später zu Problemen kommen, und die Wiederverwendbarkeit des Codes ist nicht hoch.

Verwenden Sie ref und reactive, um reaktionsfähige Daten im Setup zu definieren

Bevor Sie ref und reactive zum Definieren von Daten verwenden, müssen Sie diese aus Vue dekonstruieren.

import {ref,reactive} from 'vue';
Nach dem Login kopieren

Sowohl ref als auch reaktiv können die definierten Daten direkt in der Vue-Vorlage abrufen. Wenn sie jedoch über Methoden abgerufen werden, gibt es bestimmte Unterschiede bei der Erfassung der durch ref und reaktiv definierten Daten Das durch ref definierte Wertattribut muss indirekt abgerufen werden, und die durch reactive definierten Daten können direkt abgerufen werden, wenn diese beiden Datentypen geändert werden.

export default {
  setup() {
    // 使用ref定义响应式数据
    const title = ref("这是一个标题");
    // 使用reactive定义响应式数据
    const userinfo = reactive({
      username: "张三",
      age: 20
    });
    // 获取reactive中的属性可以直接获取
    const getUserName = () => {
      alert(userinfo.username)
    };
    // 获取ref中的数据需要通过value属性
    const getTitle = () => {
      alert(title.value)
    };
    const setUserName = () => {
      // 修改reactive中的属性可以直接修改
      userinfo.username = "修改后的张三"
    };
    const setTitle = () => {
      // 修改ref中的属性,需要通过value
      title.value = "这是修改后的标题"
    };
    return {
      title,
      userinfo,
      getUserName,
      getTitle,
      setTitle,
      setUserName
    }
  },
  data() {
    return {
      msg: "这是Home组件的msg"
    }
  },
  methods: {
    run() {
      alert('这是Home组件的run方法')
    }
  }
}
Nach dem Login kopieren

Sie können das V-Modell verwenden, um direkt eine bidirektionale Datenbindung durchzuführen.

<input type="text" v-model="title">
<input type="text" v-model="userinfo.username">
Nach dem Login kopieren

toRefs dekonstruiert reaktionsfähige Objektdaten

Der Grund, warum toRefs benötigt wird, liegt darin, dass die durch toRefs dekonstruierten Daten auch reaktionsfähige Eigenschaften aufweisen. Dies ist der Grund, warum toRefs benötigt wird .

Dekonstruieren Sie toRefs aus Vue

import {ref,reactive,toRefs} from &#39;vue&#39;;
Nach dem Login kopieren

Setup und nehmen Sie die folgenden Änderungen an den Rückgabedaten vor

return {
  title,
  userinfo,
  getUserName,
  getTitle,
  setTitle,
  setUserName,
  ...toRefs(article)
}
Nach dem Login kopieren

Berechnete Eigenschaften im Setup

Berechnete Eigenschaften im Setup ähneln allgemeinen berechneten Eigenschaften, der Unterschied besteht darin, dass sie nicht gelesen werden können .

setup() {
    let userinfo = reactive({
      firstName: "",
      lastName: ""
    });
    let fullName = computed(() => {
      return userinfo.firstName + " " + userinfo.lastName
    })
    return {
      ...toRefs(userinfo),
      fullName
    }
  }
Nach dem Login kopieren

readonly: Deep Read-only Proxy

readonly existiert, um reaktive Objekte in gewöhnliche primitive Objekte umwandeln zu können.

Einführung schreibgeschützt.

import {computed, reactive,toRefs,readonly} from &#39;vue&#39;
Nach dem Login kopieren

Übergeben Sie das reaktive Objekt als schreibgeschützt.

let userinfo = reactive({
  firstName: "666",
  lastName: ""
});
userinfo = readonly(userinfo);
Nach dem Login kopieren

watchEffect im Setup

watchEffect im Setup hat die folgenden Eigenschaften.

Kann Datenänderungen im Setup überwachen. Sobald sich die Daten ändern, wird die Rückruffunktion in watchEffect ausgeführt.

Die Daten im Setup ändern sich nicht in Echtzeit und werden zunächst einmal ausgeführt.

setup() {
    let data = reactive({
      num: 1
    });
    watchEffect(() => {
      console.log(`num2=${data.num}`);
    });
    setInterval(() => {
      data.num++;
    },1000)
    return {
      ...toRefs(data)
    }
  }
Nach dem Login kopieren

watch im Setup

Die grundlegende Methode zur Verwendung von watch zur Überwachung von Daten.

setup() {
    let keyword = ref("111");
    watch(keyword,(newData,oldData) => {
      console.log("newData是:",newData);
      console.log("oldData是:",oldData);
    })
    return {
      keyword
    }
  }
Nach dem Login kopieren

Der Unterschied zwischen watch und watchEffect

watch wird nicht ausgeführt, wenn die Seite zum ersten Mal gerendert wird, watchEffect jedoch.

watch kann die Werte vor und nach der Änderung des Datenstatus abrufen.

Lifecycle-Hook-Funktion im Setup

Einführung in die Composition API und ihre Kernverwendung in Vue3

Lifecycle-Hook im Setup ähnelt dem direkten Aufruf einer Funktion.

  setup() {
    let keyword = ref("111");
    watch(keyword,(newData,oldData) => {
      console.log("newData是:",newData);
      console.log("oldData是:",oldData);
    })
    onMounted(() => {
      console.log(&#39;onMounted&#39;);
    })
    onUpdated(() => {
      console.log(&#39;onUpdated&#39;);
    })
    return {
      keyword
    }
  }
Nach dem Login kopieren

Die Requisiten im Setup

werden an die übergeordnete Komponente übergeben.

<Search :msg="msg" />
Nach dem Login kopieren

Empfangserklärung

props: [&#39;msg&#39;],
  setup(props) {
    console.log(props);
  }
Nach dem Login kopieren

Mit Inject bereitstellen

Manchmal müssen wir Daten von der übergeordneten Komponente zur untergeordneten Komponente übergeben, aber wenn die übergeordnete Komponente zur untergeordneten Komponente eine tief verschachtelte Beziehung darstellt, reicht die Weitergabe über Requisiten aus In diesem Fall können wir Provide und Inject verwenden, um dies zu erreichen.

  • Allgemeine Verwendung

Die Root-Komponente leitet Daten über Provide weiter.

export default {
  data() {
    return {
    }
  },
  components: {
    Home
  },
  provide() {
    return {
      title: "app组件里面的标题"
    }
  }
}
Nach dem Login kopieren

Komponenten, die Daten empfangen müssen, werden über die Inject-Anweisung empfangen

export default {
  inject: [&#39;title&#39;],
  data() {
    return {
    }
  },
  components: {
  }
}
Nach dem Login kopieren

Nach Erhalt der Anweisung können sie direkt verwendet werden.

<template>
  <div class="container">
    这是Location组件
    {{title}}
  </div>
</template>
Nach dem Login kopieren
  • provide kann die Daten darin abrufen

export default {
  data() {
    return {
      title: "根组件的数据"
    }
  },
  components: {
    Home
  },
  provide() {
    return {
      title: this.title
    }
  }
}
Nach dem Login kopieren

Hinweis: Wenn sich in der oben genannten allgemeinen Verwendung die Daten in der übergeordneten Komponente ändern, ändert sich die untergeordnete Komponente nicht. Daher wird empfohlen, die folgende Zusammensetzung zu verwenden Durch Bereitstellung und Injektion in der API können synchrone Änderungen erzielt werden.

im Setup bereitstellen und einfügen

Stammkomponente

import Home from &#39;./components/Home.vue&#39;
import {ref,provide} from &#39;vue&#39;
export default {
  setup() {
    let title = ref(&#39;app根组件里面的title&#39;);
    let setTitle = () => {
      title.value = "改变后的title"
    }
    provide("title",title);
    return {
      title,
      setTitle
    }
  },
  data() {
    return {
    }
  },
  components: {
    Home
  }
}
Nach dem Login kopieren

Komponenten, die Daten verwenden

import {inject} from &#39;vue&#39;
export default {
  setup() {
    let title = inject(&#39;title&#39;);
    return {
      title
    }
  },
  data() {
    return {
    }
  },
  components: {
  }
}
Nach dem Login kopieren

Anders als bei Requisiten werden die Daten in der untergeordneten Komponente mit der übergeordneten Komponente synchronisiert, wenn eine bidirektionale Datenbindung verwendet wird.

Empfohlenes Lernen: „Die neueste Auswahl von 5 vue.js-Video-Tutorials

Das obige ist der detaillierte Inhalt vonEinführung in die Composition API und ihre Kernverwendung in Vue3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:juejin.im
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!