vue3新發(fā)現(xiàn)

含有動(dòng)態(tài)指令參數(shù)內(nèi)容(2.6.0新增)

Event Handling

Multiple Event Handlers

指定多個(gè)事件處理函數(shù)

<!-- both one() and two() will execute on button click -->
<button @click="one($event), two($event)">
  Submit
</button>

Components In-Depth

Non-Prop Attributes

  • Attribute Inheritance on Multiple Root Nodes
    vue3允許多個(gè)根節(jié)點(diǎn)的組件了猫牡,所以attribute繼承在多根節(jié)點(diǎn)的情況下摆马,需要在組件內(nèi)指明由哪個(gè)根節(jié)點(diǎn)繼承。

Custom Events

app.component('custom-form', {
  emits: ['in-focus', 'submit']
})

usage for Validate Emitted Events:

app.component('custom-form', {
  emits: {
    // No validation
    click: null,

    // Validate submit event
    submit: ({ email, password }) => {
      if (email && password) {
        return true
      } else {
        console.warn('Invalid submit event payload!')
        return false
      }
    }
  },
  methods: {
    submitForm() {
      this.$emit('submit', { email, password })
    }
  }
})
<user-name
  v-model:first-name="firstName"
  v-model:last-name="lastName"
></user-name>
app.component('user-name', {
  props: {
    firstName: String,
    lastName: String
  },
  emits: ['update:firstName', 'update:lastName'],
  template: `
    <input 
      type="text"
      :value="firstName"
      @input="$emit('update:firstName', $event.target.value)">

    <input
      type="text"
      :value="lastName"
      @input="$emit('update:lastName', $event.target.value)">
  `
})

v-model帶入修飾符生成的用于檢查的prop為modelModifiers
v-model:argument帶入修飾符生成的用于檢查的prop為argument+"Modifiers"
話說,要是v-model:model會(huì)是個(gè)什么情況呢瞎饲?

Slots

Composition API

按照官方文檔的說法口叙,以前的option API 配置式的寫法會(huì)使組件中處理一個(gè)任務(wù)的邏輯分散在各處option中,如果組件不大嗅战,還不至于影響開發(fā)妄田,組件變大之后,各個(gè)任務(wù)的處理邏輯相互交叉,會(huì)使代碼維護(hù)變得痛苦疟呐。
新的Composition API可以將處理同一任務(wù)的邏輯集中脚曾。

ref,賦予值響應(yīng)特性

In Vue 3.0 we can make any variable reactive anywhere with a new ref function

import { ref } from 'vue'

const counter = ref(0)

console.log(counter) // { value: 0 }
console.log(counter.value) // 0

counter.value++
console.log(counter.value) // 1

轉(zhuǎn)換后會(huì)在包裹一層對象萨醒,是為了保證始終引用調(diào)用斟珊,可以保證不丟失值的響應(yīng)特性苇倡。


引用與傳值

setup

  • arguments: props, context
    prop: props是響應(yīng)式對象富纸,對于props不能使用es6解構(gòu)寫法,否則破壞其響應(yīng)特性旨椒。替代方法時(shí)使用toRefs方法晓褪,該方法只能使必須的prop保持響應(yīng)性,在非必須prop又想保持其響應(yīng)性的情況下可以使用toRef综慎。
    context: context是一個(gè)普通對象涣仿,沒有被vue處理,可以安全地使用es6結(jié)構(gòu)寫法示惊。有attrs好港、slotsemit三個(gè)成員對應(yīng)三個(gè)組件屬性米罚。
  • setup執(zhí)行時(shí)钧汹,組件實(shí)例并沒有被建立,所以在setup內(nèi)沒有this录择,只能通過context的四個(gè)屬性值獲取組件的一些情況拔莱,同理,由于組件實(shí)例沒有被創(chuàng)建隘竭,也不能訪問data塘秦、computed、methods动看。
  • setup的返回值可以在組件的任何地方訪問到尊剔。返回值會(huì)被automatically unwrapped-自動(dòng)展開?菱皆,所以不用對做過ref包裝的值手動(dòng)取出其value再返回赋兵。
  • 對于beforeCreate和created的鉤子的處理

setup is run around the beforeCreate and created lifecycle hooks
setup在beforeCreate和created之間運(yùn)行?(不知道翻譯是否準(zhǔn)確)

意思就是需要在這兩個(gè)周期里執(zhí)行的邏輯直接寫道setup就行了搔预。

在setup中注入相應(yīng)生命周期要執(zhí)行的函數(shù)

export default {
  setup() {
    // mounted
    onMounted(() => {
      console.log('Component is mounted!')
    })
  }
}

對應(yīng)列表:

Options API Hook inside setup
beforeCreate Not needed*
created Not needed*
beforeMount onBeforeMount
mounted onMounted
beforeUpdate onBeforeUpdate
updated onUpdated
beforeUnmount onBeforeUnmount
unmounted onUnmounted
errorCaptured onErrorCaptured
renderTracked onRenderTracked
renderTriggered onRenderTriggered

使用Provide/Inject

  • Provide的數(shù)據(jù)應(yīng)該式可響應(yīng)的
    使用reactive霹期,ref
  • Provide的數(shù)據(jù)對于inject來說應(yīng)該是只讀的
    使用readonly
<!-- src/components/MyMap.vue -->
<template>
  <MyMarker />
</template>

<script>
import { provide, reactive, readonly, ref } from 'vue'
import MyMarker from './MyMarker.vue

export default {
  components: {
    MyMarker
  },
  setup() {
    const location = ref('North Pole')
    const geolocation = reactive({
      longitude: 90,
      latitude: 135
    })

    const updateLocation = () => {
      location.value = 'South Pole'
    }

    provide('location', readonly(location))
    provide('geolocation', readonly(geolocation))
    provide('updateLocation', updateLocation)
  }
}
</script>

Template Syntax

Dynamic Arguments

  • v-bind
<!-- full syntax -->
<a v-bind:href="url"> ... </a>

<!-- shorthand -->
<a :href="url"> ... </a>

<!-- shorthand with dynamic argument -->
<a :[key]="url"> ... </a>
  • v-on
<!-- full syntax -->
<a v-on:click="doSomething"> ... </a>

<!-- shorthand -->
<a @click="doSomething"> ... </a>

<!-- shorthand with dynamic argument -->
<a @[event]="doSomething"> ... </a>
  • value constraint

Dynamic arguments are expected to evaluate to a string, with the exception of null. The special value null can be used to explicitly remove the binding. Any other non-string value will trigger a warning.

只接受string,null用于明確解除綁定拯田,除此外的值觸發(fā)警告

  • expression constraint

Dynamic argument expressions have some syntax constraints because certain characters, such as spaces and quotes, are invalid inside HTML attribute names.

  • recommend using with computed property
  • syntax

access to global method

https://github.com/vuejs/vue-next/blob/master/packages/shared/src/globalsWhitelist.ts#L3

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末历造,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吭产,老刑警劉巖侣监,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異臣淤,居然都是意外死亡橄霉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門邑蒋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姓蜂,“玉大人,你說我怎么就攤上這事医吊∏” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵卿堂,是天一觀的道長束莫。 經(jīng)常有香客問我,道長草描,這世上最難降的妖魔是什么览绿? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮穗慕,結(jié)果婚禮上饿敲,老公的妹妹穿的比我還像新娘。我一直安慰自己揍诽,他們只是感情好诀蓉,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著暑脆,像睡著了一般渠啤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上添吗,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天沥曹,我揣著相機(jī)與錄音,去河邊找鬼碟联。 笑死妓美,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鲤孵。 我是一名探鬼主播壶栋,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼普监!你這毒婦竟也來了贵试?” 一聲冷哼從身側(cè)響起琉兜,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎毙玻,沒想到半個(gè)月后豌蟋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡桑滩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年梧疲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片运准。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡幌氮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出戳吝,到底是詐尸還是另有隱情浩销,我是刑警寧澤贯涎,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布听哭,位于F島的核電站,受9級特大地震影響塘雳,放射性物質(zhì)發(fā)生泄漏陆盘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一败明、第九天 我趴在偏房一處隱蔽的房頂上張望隘马。 院中可真熱鬧,春花似錦妻顶、人聲如沸酸员。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幔嗦。三九已至,卻和暖如春沥潭,著一層夾襖步出監(jiān)牢的瞬間邀泉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工钝鸽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓垢揩,卻偏偏與公主長得像闹获,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子颜懊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 表單數(shù)據(jù)處理是一個(gè)項(xiàng)目中的必不可少的內(nèi)容财岔,編寫表單組件是完成復(fù)雜項(xiàng)目基礎(chǔ)阱穗。本文深入整理了Vue制作表單組件的各個(gè)方...
    全棧顧問閱讀 668評論 0 1
  • 前言: 基于vue 2+ 寫一份知識總結(jié),可以說是學(xué)習(xí)筆記 目錄: 一使鹅、vue實(shí)例的基本結(jié)構(gòu)二揪阶、vue事件處理、綁...
    下一機(jī)閱讀 6,170評論 3 27
  • 一患朱、簡介 1鲁僚、 Vue.js 是什么 參考網(wǎng)址:https://cn.vuejs.org/v2/guide/ind...
    滿天繁星_28c5閱讀 477評論 0 1
  • 什么是Vue.js Vue.js是目前最火的一個(gè)前端框架,React是最流行的一個(gè)前端框架裁厅,(React除了開發(fā)網(wǎng)...
    EEEEsun閱讀 643評論 0 1
  • 什么事Vue.js Vue.js事目前最火的一個(gè)前端框架冰沙,React是流行的一個(gè)框架(React除了開發(fā)網(wǎng)站還可以...
    cj小牛閱讀 404評論 0 0