您好,登錄后才能下訂單哦!
這篇文章主要介紹了Vue3 setup的注意點及watch監視屬性的情況有哪些的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Vue3 setup的注意點及watch監視屬性的情況有哪些文章都會有所收獲,下面我們一起來看看吧。
1.setup的執行時間要比beforCreate執行要早
export default { name: "Demo", beforeCreate(){ console.log('beforeCreate已執行'); }, setup() { console.log('setup已執行'); let person = reactive({ name: "小明", age: 20, }); return { person, }; }, };
setup的參數
1.props: 值為對象,包含: 組件外部傳遞過來,且組件內部聲明接收了的屬性
2.context:上下文對象
①attrs:值為對象,包含: 組件外部傳遞過來,但沒有在props配置中聲明的屬性,相當于 this.$attrs
export default { name: "Demo", props:['msg','age'], setup(props) { console.log(props); let person = reactive({ name: "小明", age: 20, }); return { person, }; }, };
②slots: 收到的插槽內容,相當于 this.$slots
。
在App中定義插槽
<template v-slot:qwe> <span>123</span> </template> <template v-slot:ewq> <span>321</span> </template>
在子組件中獲取到插槽
console.log(context.slots); // 得到插槽
③emit: 分發自定義事件的函數,相當于 this.$emit
。
在App中寫一個自定義事件并且傳給組件
<Demo @hi="Hello" msg="山魚" age=10> </Demo>
setup() { function Hello(){ console.log('你好!'); } return { Hello } }
然后去到子組件使用context.comit獲取到自定義事件
function point(){ context.emit('hi',666) } 5TgxPT2v-1681788304084)] ```js function point(){ context.emit('hi',666) }
與Vue2中的computed配置功能一致
import { reactive,computed} from "vue"; export default { name: "Demo", setup() { let person = reactive({ firstName: "小", lastName: "明", }); // 計算屬性的簡寫形式,不考慮修改,是只讀的 /*person.fullName= computed(()=>{ return person.firstName+'-'+person.lastName }) */ // 計算屬性的完整形式(可以讀改) person.fullName= computed({ get(){ return person.firstName +'-'+person.lastName }, set(value){ const arr = value.split('-') person.firstName = arr[0] person.lastName = arr[1] } }) return { person, }; }, };
有兩種watch,分別是單個屬性數據監視,和多個屬性數據監視
watch中的三個參數分別為,監視的對象,監視的函數,監視屬性的配置
監視ref所定義的數據
①監視屬性監視ref的一個響應式的值
watch(sum, (newvalue, oldvalue) => { console.log('當前值為'+newvalue, '以前值為'+oldvalue); });
②監視ref所定義的多個響應式數據
watch([sum,msg], (newvalue, oldvalue) => { console.log('當前值為'+newvalue, '以前值為'+oldvalue); });
監視reactive所定義的數據
①監視reactive定義的數據的變化
使用reactive定義的數據無法使用watch正確的獲取newValue
并且會強制開啟深度監視
watch(person,(newValue, oldValue) => { console.log('person變化了',newValue,oldValue) })
②監視reactive所定義的響應式數據的某個屬性
watch(()=>person.name,(newValue,oldValue)=>{ console.log('person.name發生了變化',newValue,oldValue) })
③監視reactive所定義的響應式數據的某些屬性
watch([()=>{person.age},()=>{person.name}],(newValue,oldValue)=>{ console.log('person.name發生了變化',newValue,oldValue) })
④特殊形況
注:該情況監視的是recative所定義的對象中的某個屬性,所以deep可以開啟
watch(()=>person.job,(newValue,oldValue)=>{ console.log('person.name發生了變化',newValue,oldValue) }, {deep: true})
關于“Vue3 setup的注意點及watch監視屬性的情況有哪些”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Vue3 setup的注意點及watch監視屬性的情況有哪些”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。