Hinweis: Wenn Composition Api komplexe Funktionen hat, Bei Komponenten mit einer großen Menge Code arbeiten wir mit benutzerdefinierten Hooks zusammen, um den Code in Funktionsblöcke zu schreiben, und Variablen und Methoden werden gemeinsam definiert und aufgerufen. Beispielsweise integriert die A-Funktion reaktionsfähige Variablen und Methoden, und wir müssen nur Änderungen vornehmen A. Für die spätere Wartung muss der Code unter dem Funktionsmodul nicht gleichzeitig auf logisch verstreute Methoden und Daten achten, wie Vue2 in Option Api.
Das Schreiben benutzerdefinierter Hooks in Vue3 muss also beherrscht werden! Alles verkörpert die Idee der geringen Kopplung und hohen Kohäsion der Vue3 Composition Api! Nach dem Lesen der offiziellen Dokumente und Open-Source-Administratorvorlagen verwendet der Autor eine große Anzahl benutzerdefinierter Hooks!
Obwohl der Beamte nicht klar angibt oder definiert, was benutzerdefinierte Hooks sind, werden sie überall verwendet; Extrahieren Sie einige wiederverwendbare Methoden in Form von Funktionen und hängen Sie sie wie Haken auf, die jederzeit eingeführt und aufgerufen werden können, um das Ziel einer hohen Kohäsion und einer geringen Kopplung zu erreichen # Wiederverwendbare Funktionen in externe JS-Dateien extrahieren
#🎜 🎜 #
Dekonstruieren Sie beim Zitieren explizit die reaktionsfähigen Variablen oder Methoden, z. B.: const {nameRef, Fn} = useXX()import { ref, watch } from 'vue'; const useAdd= ({ num1, num2 }) =>{ const addNum = ref(0) watch([num1, num2], ([num1, num2]) => { addFn(num1, num2) }) const addFn = (num1, num2) => { addNum.value = num1 + num2 } return { addNum, addFn } } export default useAdd
//减法功能-Hook import { ref, watch } from 'vue'; export function useSub ({ num1, num2 }){ const subNum = ref(0) watch([num1, num2], ([num1, num2]) => { subFn(num1, num2) }) const subFn = (num1, num2) => { subNum.value = num1 - num2 } return { subNum, subFn } }
<template> <div> num1:<input v-model.number="num1" /> <br /> num2:<input v-model.number="num2" /> </div> <span>加法等于:{{ addNum }}</span> <br /> <span>减法等于:{{ subNum }}</span> </template> <script setup> import { ref } from 'vue' import useAdd from './useAdd.js' //引入自动hook import { useSub } from './useSub.js' //引入自动hook const num1 = ref(2) const num2 = ref(1) //加法功能-自定义Hook(将响应式变量或者方法形式暴露出来) const { addNum, addFn } = useAdd({ num1, num2 }) addFn(num1.value, num2.value) //减法功能-自定义Hook (将响应式变量或者方法形式暴露出来) const { subNum, subFn } = useSub({ num1, num2 }) subFn(num1.value, num2.value) </script>
Vue3-benutzerdefinierte Hooks sein und bei der Referenzierung explizit reaktionsfähige Variablen oder Methoden offenlegen, wie zum Beispiel:
Mixins
export default { mixins: [ a, b, c, d, e, f, g ], //一个组件内可以混入各种功能的Mixin mounted() { console.log(this.name) //问题来了,这个name是来自于哪个mixin? } }
Unbekannte Mixin-Verwirrung, wir können einfach nicht wissen, aus welcher Mixin-Datei die Attribute stammen, was später zu Schwierigkeiten führt Wartung#🎜 🎜#
Vue3 Custom Hooks//加法功能-自定义Hook(将响应式变量或者方法形式暴露出来) const { addNum, addFn } = useAdd({ num1, num2 }) addFn(num1.value, num2.value) //减法功能-自定义Hook (将响应式变量或者方法形式暴露出来) const { subNum, subFn } = useSub({ num1, num2 }) subFn(num1.value, num2.value)
export default { mixins: [ addMixin, subMixin], //组件内混入加法和减法Mixin mounted(){ this.add(num1,num2) //调用addMixin内部的add方法 this.sub(num1,num2) //调用subMixin内部的sub方法 } }
Fügen Sie einen durchschnittlichen Hook basierend auf dem obigen Beispiel hinzuVue3 benutzerdefinierter Hook
//平均功能-Hook import { ref, watch } from "vue"; export function useAverage(addNum) { const averageNum = ref(0); watch(addNum, (addNum) => { averageFn(addNum); }); const averageFn = (addNum) => { averageNum.value = addNum / 2; }; return { averageNum, averageFn, }; }
//组件内 //加法功能-自定义Hook(将响应式变量或者方法形式暴露出来) const { addNum, addFn } = useAdd({ num1, num2 }) addFn(num1.value, num2.value)//主动调用,返回最新addNum //平均功能-自定义Hook- hook传入参数值来其他hook暴露出来的变量 const { averageNum, averageFn} = useAverage(addNum) averageFn(addNum.value)
3. Mixin-Variablen mit demselben Namen werden überschrieben
Der benutzerdefinierte Vue3-Hook kann Variablen mit demselben Namen umbenennen, wenn er eingeführt wird
export default { mixins: [ addMixin, subMixin], //组件内混入加法和减法Mixin mounted(){ this.add(num1,num2) //调用加法addMixin内部的add方法 this.sub(num1,num2) //调用减法subMixin内部的sub方法 } }
//加法功能-自定义Hook(将响应式变量或者方法形式暴露出来) const { totalNum:addNum, addFn } = useAdd({ num1, num2 }) addFn(num1.value, num2.value) //减法功能-自定义Hook (将响应式变量或者方法形式暴露出来) const { totalNum:subNum, subFn } = useSub({ num1, num2 }) subFn(num1.value, num2.value)
Das obige ist der detaillierte Inhalt vonSo passen Sie Hooks in Vue3 an. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!