最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3 defineModel的使用示例詳解

 更新時(shí)間:2025年01月16日 09:48:44   作者:啥也不會(huì)啥都白費(fèi)  
文章介紹了vue中向子組件傳值并允許修改的機(jī)制,通過defineModel實(shí)現(xiàn)雙向綁定,它返回一個(gè)ref,并且可以配置底層prop的選項(xiàng),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

基礎(chǔ)配置使用

在vue中,父組件可以在子組件上傳值,子組件通過props接收,但是子組件不可修改props,否則控制臺(tái)會(huì)報(bào)出警告,這也符合vue的單向數(shù)據(jù)流原則,所以如果想要向子組件傳值,并且允許子組件修改的話,一般會(huì)這么寫:

<!-- Child.vue -->
<script setup>
const props = defineProps(['modelValue'])
const emit = defineEmits(['update:modelValue'])
</script>
<template>
  <input
    :value="props.modelValue"
    @input="emit('update:modelValue', $event.target.value)"
  />
</template>

在父組件調(diào)用

<!-- Parent.vue -->
<Child
  :modelValue="foo"
  @update:modelValue="$event => (foo = $event)"
/>

而在vue3中,聲明了一種新的傳值方式defineModel,可以更方便的向子組件傳值,并且允許子組件修改傳值,以實(shí)現(xiàn)雙向綁定.

<!-- Child.vue -->
<script setup>
const model = defineModel()
function update() {
  model.value++
}
</script>
<template>
  <div>Parent bound v-model is: {{ model }}</div>
  <button @click="update">Increment</button>
</template>

父組件

<!-- Parent.vue -->
<Child v-model="countModel" />

defineModel() 返回的值是一個(gè) ref。它可以像其他 ref一樣被訪問以及修改,不過它能起到在父組件和當(dāng)前變量之間的雙向綁定的作用:

  • 它的 .value 和父組件的 v-model 的值同步;
  • 當(dāng)它被子組件變更了,會(huì)觸發(fā)父組件綁定的值一起更新。

defineModel允許配置,可以通過給 defineModel 傳遞選項(xiàng),來聲明底層 prop 的選項(xiàng):

// 使 v-model 必填
const model = defineModel({ required: true })
// 提供一個(gè)默認(rèn)值
const model = defineModel({ default: 0 })

需要注意的是:如果為 defineModel prop 設(shè)置了一個(gè) default 值且父組件沒有為該 prop 提供任何值,會(huì)導(dǎo)致父組件與子組件之間不同步。

<!-- Child.vue -->
const model = defineModel({ default: 1 })
<!-- Parent.vue -->
const myRef = ref()
<Child v-model="myRef"></Child>

上述代碼中,父組件的 myRef 是 undefined,而子組件的 model 是 1,所以如果設(shè)置初始值,應(yīng)保持二者一致。

配置參數(shù),綁定多個(gè)v-model

組件上的 v-model 也可以接受一個(gè)參數(shù):

<MyComponent v-model:title="bookTitle" />
<!-- MyComponent.vue -->
<script setup>
const title = defineModel('title')
</script>
<template>
  <input type="text" v-model="title" />
</template>

如果需要額外的 prop 選項(xiàng),應(yīng)該在 model 名稱之后傳遞:

const title = defineModel('title', { required: true })

綁定多個(gè)v-model

<UserName
  v-model:first-name="first"
  v-model:last-name="last"
/>
<script setup>
const firstName = defineModel('firstName')
const lastName = defineModel('lastName')
</script>
<template>
  <input type="text" v-model="firstName" />
  <input type="text" v-model="lastName" />
</template>

到此這篇關(guān)于Vue3 defineModel的使用示例詳解的文章就介紹到這了,更多相關(guān)Vue3 defineModel使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3前端axios請(qǐng)求報(bào)錯(cuò)network錯(cuò)誤的解決辦法

    vue3前端axios請(qǐng)求報(bào)錯(cuò)network錯(cuò)誤的解決辦法

    在使用Axios進(jìn)行網(wǎng)絡(luò)請(qǐng)求時(shí),遇到“Network?Error”報(bào)錯(cuò)可能是由多種原因?qū)е碌?這篇文章主要介紹了vue3前端axios請(qǐng)求報(bào)錯(cuò)network錯(cuò)誤的解決辦法,需要的朋友可以參考下
    2025-08-08
  • vue中resetFields重置初始值不生效的原因詳解

    vue中resetFields重置初始值不生效的原因詳解

    resetFields 對(duì)整個(gè)表單進(jìn)行重置,將所有字段值重置為空并移除校驗(yàn)結(jié)果,下面這篇文章主要給大家介紹了關(guān)于vue中resetFields重置初始值不生效的原因的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 基于Vue2實(shí)現(xiàn)簡易的省市區(qū)縣三級(jí)聯(lián)動(dòng)組件效果

    基于Vue2實(shí)現(xiàn)簡易的省市區(qū)縣三級(jí)聯(lián)動(dòng)組件效果

    這是一個(gè)基于Vue2的簡易省市區(qū)縣三級(jí)聯(lián)動(dòng)組件,可以控制只顯示省級(jí)或只顯示省市兩級(jí),可設(shè)置默認(rèn)值等。提供原始省市縣代碼和名稱數(shù)據(jù),適用于各種有關(guān)城市區(qū)縣的應(yīng)用。需要的朋友可以參考下
    2018-11-11
  • Vue+better-scroll 實(shí)現(xiàn)通訊錄字母索引的示例代碼

    Vue+better-scroll 實(shí)現(xiàn)通訊錄字母索引的示例代碼

    通訊錄字母索引是常用的一種功能,本文主要介紹了Vue+better-scroll 實(shí)現(xiàn)通訊錄字母索引,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Vue圖片放大鏡組件的封裝使用詳解

    Vue圖片放大鏡組件的封裝使用詳解

    這篇文章主要為大家詳細(xì)介紹了Vue圖片放大鏡組件的封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue.js項(xiàng)目使用原生js實(shí)現(xiàn)移動(dòng)端的輪播圖

    vue.js項(xiàng)目使用原生js實(shí)現(xiàn)移動(dòng)端的輪播圖

    這篇文章主要為大家介紹了vue.js項(xiàng)目中使用原生js實(shí)現(xiàn)移動(dòng)端的輪播圖,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • vue使用xlsx導(dǎo)入到表格中示例代碼

    vue使用xlsx導(dǎo)入到表格中示例代碼

    這篇文章主要介紹了vue使用xlsx導(dǎo)入到表格中代碼,具體實(shí)現(xiàn)是先通過FileReader將上傳的文件讀取為二進(jìn)制數(shù)據(jù),然后使用xlsx將它解析成JSON數(shù)據(jù),最后將JSON數(shù)據(jù)填充到表格中,需要的朋友可以參考下
    2023-11-11
  • 使用vue實(shí)現(xiàn)一個(gè)電子簽名組件的示例代碼

    使用vue實(shí)現(xiàn)一個(gè)電子簽名組件的示例代碼

    這篇文章主要介紹了使用vue實(shí)現(xiàn)一個(gè)電子簽名組件的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 深入探討Vue3實(shí)現(xiàn)多數(shù)據(jù)變化監(jiān)聽的方式

    深入探討Vue3實(shí)現(xiàn)多數(shù)據(jù)變化監(jiān)聽的方式

    隨著 Vue 3 的發(fā)布,框架帶來了更多的新特性和增強(qiáng),其中之一就是 watch 函數(shù)的升級(jí),這一改進(jìn)使得多個(gè)數(shù)據(jù)的變化偵聽更加優(yōu)雅和靈活,本文將深入探討 Vue 3 中的 watch 函數(shù),以及如何以更加優(yōu)雅的方式實(shí)現(xiàn)對(duì)多個(gè)數(shù)據(jù)變化的監(jiān)聽
    2023-08-08
  • VUE使用vuex解決模塊間傳值問題的方法

    VUE使用vuex解決模塊間傳值問題的方法

    本篇文章主要介紹了VUE使用vuex解決模塊間傳值問題 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06

最新評(píng)論

宾阳县| 瑞金市| 晋江市| 花莲县| 肇州县| 西青区| 双牌县| 公安县| 繁峙县| 英吉沙县| 清新县| 嘉黎县| 高州市| 宁夏| 临汾市| 朔州市| 太白县| 嘉鱼县| 滨海县| 台江县| 郯城县| 阿鲁科尔沁旗| 江源县| 开平市| 丹东市| 瓦房店市| 伊宁市| 郎溪县| 内丘县| 阜城县| 铁岭市| 延寿县| 纳雍县| 丁青县| 卓尼县| 乌恰县| 巩留县| 海林市| 塘沽区| 张家川| 堆龙德庆县|