vue3中sync修飾符的使用詳解
props是子組件與父組件進(jìn)行通信的常用方式,使用步驟主要有以下幾個(gè):
1. 在子組件中定義props要從父組件接收的變量(變量的類型必須寫明,默認(rèn)值可選)
// 這里以 document.vue 子組件為例
// 通過(guò) defineProps 宏的方式聲明, props 接受父組件傳遞過(guò)來(lái)的數(shù)據(jù)
const props = defineProps({
title: {
type: String,
default: 'Default title'
}
})2. 父組件引入子組件,并綁定父組件的變量傳遞給子組件。
// 這里 App.vue 為父組件
import document from './components/document.vue'
const title = ref("標(biāo)題")
// ......
<document :title="title"></document>3. 在子組件中分別打印props和使用props中的數(shù)據(jù)。
console.log("props: ", props);
// ......
// 在template 模板中不需要通過(guò)props.title方式獲取
<template>
<div> {{ title }} </div>
</template>子組件欲更改父組件數(shù)據(jù)時(shí),首先必須明確一個(gè)原則:誰(shuí)的數(shù)據(jù)誰(shuí)來(lái)維護(hù),不能直接通過(guò)props來(lái)修改(雖說(shuō)可以改變,但不允許,破壞了數(shù)據(jù)單向流)。官方給我們提供了emits去處理子組件向父組件數(shù)據(jù)通信的問(wèn)題,分為以下幾個(gè)步驟:
1. 在子組件中定義emits要向父組件觸發(fā)的事件(事件可以有多個(gè))。
// 通過(guò) defineEmits 宏的方式聲明 const emit = defineEmits(['update:title'])
2. 子組件手動(dòng)觸發(fā)事件,并傳入更新的數(shù)據(jù)。
// document.vue
<button @click="changeTitle()">click</button>
// ......
const changeTitle = (newTitle = “新標(biāo)題”) => {
emit('update:title', newTitle)
}3. 父組件在子組件標(biāo)簽中綁定同名的事件,并賦值為更新后的數(shù)據(jù)。
// App.vue <document :title="title" @update:title="(v) => title = v"></document>
這里的事件名“update:eventName”為固定寫法,vue于v2.3引入sync修飾符,省去了在組件標(biāo)簽內(nèi)寫@update函數(shù)。
使用sync修飾符:
// App.vue <document :title.sync="title" @change-title="(v) => title = v"></document> <!-- <document :title.sync="title" @changeTitle="(v) => title = v"></document>--> <!-- <document :title.sync="title" @ChangeTitle="(v) => title = v"></document>--> // document.vue 添加 changeTitle 事件 const emit = defineEmits(['update:title', 'changeTitle'])
另外這里綁定的changeTitle事件為kebab-case(短橫線命名),駝峰和大駝峰命名均可。
到此這篇關(guān)于vue3中sync修飾符的使用詳解的文章就介紹到這了,更多相關(guān)vue3 sync修飾符使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue項(xiàng)目中vue.config.js文件詳解
vue.config.js?是一個(gè)可選的配置文件,如果項(xiàng)目的?(和?package.json?同級(jí)的)?根目錄中存在這個(gè)文件,那么它會(huì)被?@vue/cli-service?自動(dòng)加載,這篇文章主要介紹了vue項(xiàng)目中vue.config.js文件的介紹,需要的朋友可以參考下2024-02-02
Vue3中Provide?/?Inject的實(shí)現(xiàn)原理分享
provide和inject主要為高階插件/組件庫(kù)提供用例,這篇文章主要給大家介紹了關(guān)于Vue3中Provide?/?Inject的實(shí)現(xiàn)原理,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02
vue配置請(qǐng)求本地json數(shù)據(jù)的方法
這篇文章主要介紹了vue配置請(qǐng)求本地json數(shù)據(jù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
詳解如何在vue項(xiàng)目中使用layui框架及采坑
這篇文章主要介紹了vue使用layui框架,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
vue2.0 + ele的循環(huán)表單及驗(yàn)證字段方法
今天小編就為大家分享一篇vue2.0 + ele的循環(huán)表單及驗(yàn)證字段方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
npm install報(bào)錯(cuò)缺少python問(wèn)題及解決
這篇文章主要介紹了npm install報(bào)錯(cuò)缺少python問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
vue中對(duì)監(jiān)聽(tīng)esc事件和退出全屏問(wèn)題的解決方案
這篇文章主要介紹了vue中對(duì)監(jiān)聽(tīng)esc事件和退出全屏問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08

