Vue3初識(shí)-2

watchEffect一進(jìn)入頁(yè)面就會(huì)執(zhí)行一次求豫,也可以進(jìn)行監(jiān)聽(tīng)?

watchEffect的回調(diào)函數(shù)中的響應(yīng)式數(shù)據(jù)只要發(fā)生了變化膜赃,回調(diào)函數(shù)會(huì)全部執(zhí)行一遍?

const obj=reactive({

? ? ? ? ? ? name:'zhangsan',

? ? ? ? ? ? age:20

? ? ? ? })

? ? ? ? const msg=ref('你好壞噢')

? ? ? ? watchEffect(()=>{

? ? ? ? ? ? let v=obj.name;

? ? ? ? ? ? let v2=msg;

? ? ? ? ? ? console.log(v,v2.value);

? ? ? ? })

return{

? ? ? ? ? ? obj,

? ? ? ? ? ? msg

? ? ? ? }


shallowReactive?

使用shallowReactive創(chuàng)建的響應(yīng)式對(duì)象不執(zhí)行嵌套對(duì)象的深層響應(yīng)式轉(zhuǎn)換,如下伤塌,obj.name和obj.age都是響應(yīng)式的灯萍,而obj.stu.no不是響應(yīng)式的,當(dāng)改變obj.stu.no的value時(shí)每聪,頁(yè)面中使用obj.stu.no的部分并不會(huì)重新渲染旦棉。??

? ? ? ? const obj1=shallowReactive({

? ? ? ? ? ? name:'法外狂徒',

? ? ? ? ? ? age:30,

? ? ? ? ? ? car:'BMW',

? ? ? ? ? ? dog:'哈士奇',

? ? ? ? ? ? stu:{

? ? ? ? ? ? ? ? no:55

? ? ? ? ? ? }

? ? ? ? })


toRef 與 toRefs

import {reactive} from 'vue'

export default {

? ? setup(){

? ? ? ? const obj = reactive({

? ? ? ? ? ? name:'zhangsan',

? ? ? ? ? ? age:20

? ? ? ? })


? ? ? ? return {

? ? ? ? ? ? obj,

? ? ? ? ? ? name:obj.name? ? ?

? ? ? ? }

? ? }

}

如上,我們定義了一個(gè)響應(yīng)式對(duì)象obj药薯,并將obj.name給到變量name绑洛,在使用時(shí)可以直接訪問(wèn)到obj.name,但這樣name無(wú)法做到響應(yīng)式童本,即使用v-model指令綁定name時(shí)真屯,無(wú)法實(shí)現(xiàn)雙向數(shù)據(jù)綁定,使用toRef或toRefs可以實(shí)現(xiàn)響應(yīng)穷娱。

toRe接收兩個(gè)參數(shù)绑蔫,第一個(gè)參數(shù)為目標(biāo)對(duì)象,第二個(gè)參數(shù)為值為字符串類型的key泵额,toRefs則直接接收一個(gè)目標(biāo)對(duì)象作為參數(shù)配深。


在 setup 中使用生命周期函數(shù)

在setup中可以通過(guò)在生命周期鉤子前面加上 “on” 來(lái)訪問(wèn)組件的生命周期鉤子。

因?yàn)閟etup是圍繞beforeCreate和created生命周期鉤子運(yùn)行的梯刚,所以不需要顯式地定義它們凉馆。換句話說(shuō),在這些鉤子中編寫的任何代碼都應(yīng)該直接在setup函數(shù)中編寫亡资。

執(zhí)行順序setup>onBeforeCreate>created>onBeforeMount>onMounted澜共。

在Vue3中,beforeUnmount替代了beforeDestroy锥腻,unmounted替代了destroyed嗦董。

import {onBeforeMount, onMounted, onBeforeUpdate, onUpdated,onBeforeUnmount,onUnmounted} from 'vue'

export default {

? ? setup(){

? ? ? ? console.log('setup');

? ? ? ? // dom掛載之前

? ? ? ? onBeforeMount(()=>{

? ? ? ? ? console.log('onBeforeMount');

? ? ? ? })

? ? ? ? // dom掛載之后

? ? ? ? onMounted(()=>{

? ? ? ? ? console.log('onMounted');

? ? ? ? })

? ? ? ? // setup 中return 的數(shù)據(jù)更新之前

? ? ? ? onBeforeUpdate(()=>{

? ? ? ? ? console.log('onBeforeUpdate');

? ? ? ? })

? ? ? ? // setup 中return 的數(shù)據(jù)更新之后

? ? ? ? onUpdated(()=>{

? ? ? ? ? console.log('onUpdated');

? ? ? ? })

? ? ? ? // 組件卸載之前

? ? ? ? onBeforeUnmount(()=>{

? ? ? ? ? console.log('onBeforeUnmount');

? ? ? ? })

? ? ? ? // 組件卸載之后

? ? ? ? onUnmounted(()=>{

? ? ? ? ? console.log('onUnmounted');

? ? ? ? })

? ? }

}


setup 語(yǔ)法糖

在setup中定義的變量與函數(shù)都需要return才能在頁(yè)面中使用,當(dāng)代碼體量越來(lái)越大時(shí)瘦黑,有時(shí)難免忘記在return中注冊(cè)京革。Vue3提供了setup語(yǔ)法糖,在script開(kāi)始標(biāo)簽中添加setup屬性幸斥,之后定義的變量與函數(shù)匹摇,無(wú)需return就可以在頁(yè)面中使用。

<template>

? <h1>CompC</h1>

? <p>

? ? 姓名:<input type="text" v-model="obj.name" /> 年齡:<input

? ? ? type="text"

? ? ? v-model="obj.age"

? ? />

? </p>

? <button @click="add">添加</button>

? <table border="1">

? ? <tr>

? ? ? <th>序號(hào)</th>

? ? ? <th>姓名</th>

? ? ? <th>年齡</th>

? ? ? <th>操作</th>

? ? </tr>

? ? <tr v-for="(v, i) in list" :key="i">

? ? ? <td>{{ i + 1 }}</td>

? ? ? <td>{{ v.name }}</td>

? ? ? <td>{{ v.age }}</td>

? ? ? <td><button @click="shanchu(i)">刪除</button></td>

? ? </tr>

? </table>

</template>



? /* 實(shí)現(xiàn)深淺拷貝的方式 */

function add() {

? /* arr.push(JSON.parse(JSON.stringify(obj))) */

? /* arr.push({...obj}) */

? if (obj.name.trim() == "" || obj.age.trim() == "") {

? ? return;

? }

? arr.push({

? ? name: obj.name,

? ? age: obj.age,

? });

? /* obj.name=''

? obj.age='' */

? for (var key in obj) {

? ? obj[key] = "";

? }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末甲葬,一起剝皮案震驚了整個(gè)濱河市廊勃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌经窖,老刑警劉巖坡垫,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梭灿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡冰悠,警方通過(guò)查閱死者的電腦和手機(jī)堡妒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)溉卓,“玉大人皮迟,你說(shuō)我怎么就攤上這事∩U” “怎么了万栅?”我有些...
    開(kāi)封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)西疤。 經(jīng)常有香客問(wèn)我烦粒,道長(zhǎng),這世上最難降的妖魔是什么代赁? 我笑而不...
    開(kāi)封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任扰她,我火速辦了婚禮,結(jié)果婚禮上芭碍,老公的妹妹穿的比我還像新娘徒役。我一直安慰自己,他們只是感情好窖壕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布忧勿。 她就那樣靜靜地躺著,像睡著了一般瞻讽。 火紅的嫁衣襯著肌膚如雪鸳吸。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天速勇,我揣著相機(jī)與錄音晌砾,去河邊找鬼。 笑死烦磁,一個(gè)胖子當(dāng)著我的面吹牛养匈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播都伪,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼呕乎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了陨晶?” 一聲冷哼從身側(cè)響起猬仁,我...
    開(kāi)封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后逐虚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谆膳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年叭爱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漱病。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡买雾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杨帽,到底是詐尸還是另有隱情漓穿,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布注盈,位于F島的核電站晃危,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏老客。R本人自食惡果不足惜僚饭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望胧砰。 院中可真熱鬧鳍鸵,春花似錦、人聲如沸尉间。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)哲嘲。三九已至贪薪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間眠副,已是汗流浹背古掏。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侦啸,地道東北人槽唾。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像光涂,于是被迫代替她去往敵國(guó)和親庞萍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355