Heim >Web-Frontend >View.js >So verwenden Sie die Funktionen setup() und reactive() in vue3
In vue2#🎜 🎜#
In vue3
2.2.setup() erste Erfahrung
<template> <h2 @click="say()">{{ msg }}</h2> </template> <script> export default { setup() { const msg = 'Hello Vue3' const say = () => { console.log(msg) } return { msg, say } }, } </script>
Hinweis: Ähnlich wie data() und Methoden in vue2 müssen sie im Gegenzug geschrieben werden, bevor sie als Ergebnisse aufgerufen werden können.
[Ergänzung zu kleinen Interviewfragen] Muss die Rückgabe im Setup nur ein Objekt sein? (Setup kann auch eine Rendering-Funktion zurückgeben) App.vue<script> import { h } from 'vue' export default { name: 'App', setup() { return () => h('h3', 'Hello Vue3') }, } </script>Die Konsole gibt Hello Vue3 mit dem h3-Tag aus.
2.3.reactive()-Funktion
Zum Beispiel, wenn ich einen Bedarf habe: Klicken Sie, um die aktuellen Zeileninformationen zu löschen
App.vueVerwenden Sie zu diesem Zeitpunkt reactive(), um das zu erstellende Array zu umschließen Es sind responsive Daten. Nicht vergessen. Jetzt ist die Seite responsiv und wird importiert. Ähnlich: Wir verwenden reactive(), um unsere Objekte zu verpacken und<template> <ul> <li v-for="(item, index) in arr" :key="item" @click="removeItem(index)">{{ item }}</li> </ul> </template> <script> export default { name: 'App', setup() { const arr = ['a', 'b', 'c'] const removeItem = (index) => { arr.splice(index, 1) } return { arr, removeItem, } }, } </script>
Durchsehen vueTools, ich klicke auf Die Daten wurden danach gelöscht, aber es gab kein tatsächliches Rendering auf der Seite
<template> <ul> <li v-for="(item, index) in arr" :key="item" @click="removeItem(index)">{{ item }}</li> </ul> </template> <script> import { reactive } from 'vue' export default { name: 'App', setup() { const arr = reactive(['a', 'b', 'c']) const removeItem = (index) => { arr.splice(index, 1) } return { arr, removeItem, } }, } </script>
Interpretation des obigen Codes zu verwenden:
#🎜 🎜#
Ich habe das Eingabefeld definiert, die Vorgänge zum Löschen und Hinzufügen von Ereignissen definiert und das V-Modell verwendet, um Daten bidirektional zu binden und das Hinzufügen und Löschen meiner Daten abzuschließen.
Haben Sie jetzt ein klareres Verständnis für die Verwendung von setup()? Vereinfachen wir unten unsere Schreibmethode. 2.3.1 Weitere Extraktion von reactive()Optimierung: Extrahieren Sie die Daten und die Geschäftslogik derselben Funktion in eine Funktion, Code Leichter zu lesen und einfacher wiederzuverwenden.
<template> <form @submit.prevent="handleSubmit"> <input type="text" v-model="user.id" /> <input type="text" v-model="user.name" /> <input type="submit" /> </form> <ul> <li v-for="(item, index) in state.arr" :key="item.id" @click="removeItem(index)">{{ item.name }}</li> </ul> </template> <script> import { reactive } from 'vue' export default { name: 'App', setup() { const state = reactive({ arr: [ { id: 0, name: 'ifer', }, { id: 1, name: 'elser', }, { id: 2, name: 'xxx', }, ], }) const removeItem = (index) => { // 默认是递归监听的,对象里面任何一个数据的变化都是响应式的 state.arr.splice(index, 1) } const user = reactive({ id: '', name: '', }) const handleSubmit = () => { state.arr.push({ id: user.id, name: user.name, }) user.id = '' user.name = '' } return { state, removeItem, user, handleSubmit, } }, } </script>Extrahieren Sie die Methode auf ähnliche Weise wie beim Importieren.
Fügen Sie die Daten und Methoden zusammen,
, um unsere einheitliche Verwaltung zu erleichtern.
App.vue
<template> <form > <input type="text" v-model="user.id" /> <input type="text" v-model="user.name" /> <button type="submit" @click.prevent="submit">提交</button> </form> <ul> <li v-for="(item, index) in state.arr" :key="item.id" @click="removeItem(index)">{{ item.name }}</li> </ul> </template> <script> import {useRemoveItem,handleSubmit} from './hooks' export default { name: 'App', setup() { const { state, removeItem } = useRemoveItem() const { user, submit } = handleSubmit(state) return { state,removeItem,user,submit } }, } </script>
hooks/index.js
import { reactive } from 'vue' export const useRemoveItem=()=> { const state= reactive( { arr: [ { id: 0, name: 'ifer', }, { id: 1, name: 'elser', }, { id: 2, name: 'xxx', }, ] }) const removeItem=(index)=>{ state.arr.splice(index,1) console.log(state.arr); } return { state, removeItem } } export const handleSubmit=(state)=>{ const user = reactive({ id: '', name: '', }) console.log(1); const submit = () => { state.arr.push({ ...user }) user.id = '' user.name = '' } return { user, submit } }
Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Funktionen setup() und reactive() in vue3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!