詳解vue3中setUp和reactive函數(shù)的用法
1 setUp的執(zhí)行時機(jī)
我們都知道,現(xiàn)在vue3是可以正常去使用methods的。
但是我們卻不可以在setUp中去調(diào)用methods中的方法。
為什么了???
我們先了解一下下面這兩個生命周期函數(shù),分別是:
beforeCreate 表示data 中的數(shù)據(jù)還沒有初始化,是不可以使用的
Created : data已經(jīng)被初始化了,可以使用
setUp在beforeCreate 和 Created 這兩個函數(shù)之間。
是不是就知道為啥setUp中不可以去調(diào)用methods中的方法了。
2.setUp中無法使用data中的數(shù)據(jù)和調(diào)用methods的方法
<script>
export default {
name: 'App',
data:function(){
return {
mess:"我是data"
}
},
methods:{
func(){
console.log("methods中的func")
},
},
setup(){
console.log('this',this);//undefined
this.func();//無法調(diào)用的哈
},
}
</script>
3.setUp函數(shù)的注意點(diǎn)
(1)由于我們不能夠在setUp函數(shù)中使用data和methods.
所以vue為了避免我們的錯誤使用,直接將setUp函數(shù)中的this
修改成為了undefined
(2) setUp函數(shù)只能夠數(shù)同步的,不能夠是異步的哈。
就是說你不能夠這樣操作
async setup(){
},
這樣會導(dǎo)致界面空白哈
4 Vue3中的reactive
在Vue2中響應(yīng)式數(shù)據(jù)是通過de fineProperty來實(shí)現(xiàn)的.
而在Vue3中響應(yīng)式數(shù)據(jù)是通過ES6的Proxy來實(shí)現(xiàn)的
reactive需要的注意點(diǎn)
reactive參數(shù)必須是對象(json/arr)
如果給reactive傳遞了其它對象
默認(rèn)情況下修改對象,界面不會自動更新
如果想更新,可以通過重新賦值的方式
5 reactive傳入字符串?dāng)?shù)據(jù)不跟新
<template>
<div>
<div>
<li>{{str}}</li>
<button @click="func1">按鈕</button>
</div>
</div>
</template>
<script>
import {reactive} from 'vue'
export default {
name: 'App',
setup(){
// reactive 的本質(zhì)就是傳入的數(shù)據(jù)包裝成一個proxy對象
// 由于在創(chuàng)建的時候,傳遞的不是一個對象,那么將不會實(shí)現(xiàn)響應(yīng)式。
let str=reactive(123)
function func1(){
console.log(str);//123
str=666;
}
return {str,func1 }
},
}
</script>
我們發(fā)現(xiàn)點(diǎn)擊按鈕的時候,視圖并沒有更新。
因?yàn)槲覀儌鞑皇且粋€對象.如果想跟新視圖。
應(yīng)該使用ref函數(shù)

6 reactive傳入數(shù)組
<template>
<div>
<div>
<li>{{arr}}</li>
<button @click="func1">按鈕</button>
</div>
</div>
</template>
<script>
import {reactive} from 'vue'
export default {
name: 'App',
setup(){
let arr=reactive([{name:'張三',age:19},{name:'李四',age:39}])
function func1(){
arr[0].name="我是張三的哥哥"
}
return {arr,func1 }
},
}
</script>

7 reactive傳入其他對象的跟新方式
<template>
<div>
<div>
<li>{{sate.time}}</li>
<button @click="func1">按鈕</button>
</div>
</div>
</template>
<script>
import {reactive} from 'vue'
export default {
name: 'App',
setup(){
let sate=reactive({
time:new Date()
})
function func1(){
//傳入的是其他對象,直接跟新
sate.time="2021年-6月-9日";
}
return {sate,func1 }
},
}
</script>
以上就是vue3 setUp和reactive函數(shù)詳細(xì)講解的詳細(xì)內(nèi)容,更多關(guān)于vue3 setUp和reactive函數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue3使用elementPlus進(jìn)行table合并處理的示例詳解
虛擬數(shù)據(jù)中公司下有多個客戶,公司一樣的客戶,公司列需要合并,客戶如果一樣也需要合并進(jìn)行展示,所以本文給大家介紹了vue3使用elementPlus進(jìn)行table合并處理的實(shí)例,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
解決項(xiàng)目vite1.0升級到2.0打包遇到Some chunks are larger問題
本文主要介紹了解決項(xiàng)目vite1.0升級到2.0打包遇到Some chunks are larger問題,文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
Vue3+ElementPlus el-date-picker設(shè)置可選時間范圍的示例代碼
在Vue3中使用Element Plus的el-date-picker組件設(shè)置可選時間范圍,你可以使用disabled-date屬性,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-07-07
nuxt 服務(wù)器渲染動態(tài)設(shè)置 title和seo關(guān)鍵字的操作
這篇文章主要介紹了nuxt 服務(wù)器渲染動態(tài)設(shè)置 title和seo關(guān)鍵字的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
vue內(nèi)置組件transition簡單原理圖文詳解(小結(jié))
這篇文章主要介紹了vue內(nèi)置組件transition簡單原理圖文詳解(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07
vue自定義loader將行內(nèi)樣式px轉(zhuǎn)rem適配
這篇文章主要為大家介紹了vue自定義loader將行內(nèi)樣式px轉(zhuǎn)rem適配示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08

