国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3探索——組件通信之v-model父子組件數(shù)據(jù)同步

這篇具有很好參考價(jià)值的文章主要介紹了vue3探索——組件通信之v-model父子組件數(shù)據(jù)同步。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

背景

再很多場景中,我們可能想在子組件中修改父組件的數(shù)據(jù),但事實(shí)上,vue不推薦我們這么做,因?yàn)閿?shù)據(jù)的修改不容易溯源。

Vue2寫法

在vue2中,我們使用.sync修飾符+自定義事件'update:xxx',來使父子組件數(shù)據(jù)同步。

// 父組件
<template>
    <div>
        <h2>我是父組件,我有{{ money }}¥</h2>
        <hr>
				<!-- 這里使用.sync修飾符,使**子組件pmoney**與**父組件money**同步 -->
        <Son :pmoney.sync="money" />
    </div>
</template>

<script>
import Son from "./son.vue";
export default {
    components: {
        Son,
    },
    data() {
        return {
            money: 1000 // 父組件數(shù)據(jù)
        };
    },
};
</script>
// 子組件
<template>
    <div>
        <h2>我是子組件,我爹有{{ pmoney }}¥</h2>
				<!-- 觸發(fā)**update:pmoney**這個(gè)自定義事件,事件參數(shù)就是要更改的值 -->
        <button @click="$emit('update:pmoney', pmoney - 100)">用了100¥</button>
    </div>
</template>

<script>
export default {
    props: {
				// 定義父組件傳進(jìn)來的數(shù)據(jù)
        pmoney: {
            type: Number,
            default: 0
        },
    },
};
</script>

這里不作過多說明,有需要請自行了解。

Vue3寫法

vue3的寫法與vue2基本一致。最大的區(qū)別就是,使用v-model代替.sync修飾符。

// 父組件
<template>
    <div>
        <!-- 父組件的數(shù)據(jù) -->
        <h2>我是父組件,我有{{ money }}¥</h2>
        <hr>
        <!-- 使用子組件 -->
        <!-- 這里v-model的作用相當(dāng)于vue2的.sync修飾符 -->
        <Son v-model:pmoney="money" />
        <!-- 也可以綁定多組數(shù)據(jù) -->
        <!-- <Son v-model:pmoney1="money" v-model:pmoney2="money" /> -->
    </div>
</template>

<script setup lang="ts">
import { ref } from 'vue';

// 引入子組件
import Son from './son.vue';

// 父組件的數(shù)據(jù)
const money = ref(1000);
</script>
// 子組件
<template>
    <div>
        <!-- 使用props中的數(shù)據(jù) -->
        <h3>我是子組件,我爹有{{ pmoney }}¥</h3>
        <!-- 這里通過自定義事件,向父組件傳遞變更后的值,由父組件監(jiān)聽事件并修改數(shù)據(jù) -->
        <button @click="emit('update:pmoney', pmoney - 100)">我使用了100¥</button>
    </div>
</template>

<script setup lang="ts">
// 定義props,接收父組件的數(shù)據(jù)
defineProps(['pmoney']);

// 定義emits,用于觸發(fā)父組件的事件
const emit = defineEmits(['update:pmoney']);
</script>

原理剖析

下面的v-model:pmoney實(shí)際是v-bind:pmoney 屬性綁定和@update:pmoney 事件綁定的語法糖。

這里事件綁定的@update:是固定的,這就是子組件的自定義事件要加update: 前綴的原因。

<Son v-model:pmoney="money" />

相當(dāng)于

<Son :pmoney="money" @update:pmoney="money = $event" />
  • $event:子組件通過自定義事件傳給父組件的值。

父子組件數(shù)據(jù)同步的本質(zhì)

本質(zhì)是子組件通過自定義事件向父組件傳參數(shù),子組件觸發(fā)自定義事件并傳值,父組件監(jiān)聽自定義事件并取值,同時(shí)修改原本的數(shù)據(jù),因?yàn)関-bind數(shù)據(jù)綁定,子組件數(shù)據(jù)也會(huì)更新到最新的值。文章來源地址http://www.zghlxwxcb.cn/news/detail-675076.html

到了這里,關(guān)于vue3探索——組件通信之v-model父子組件數(shù)據(jù)同步的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue項(xiàng)目中對組件使用v-model綁定值,在vue3中如何更新數(shù)據(jù)

    vue項(xiàng)目中對組件使用v-model綁定值,在vue3中如何更新數(shù)據(jù)

    在el-form 中 el-form-item 綁定組件進(jìn)行校驗(yàn) 想在表單下面爆紅提示 可以對組件使用v-model綁定值 vue2 通過this.$emit(‘input’,value) 更新 v-model值 vue3 通過this.$emit(‘update:modelValue’ ,value) 更新 v-model值

    2024年02月15日
    瀏覽(20)
  • 組件封裝v-model .sync在父子組件中實(shí)現(xiàn)雙向數(shù)據(jù)綁定 如何處理單向數(shù)據(jù)流 封裝表單組件

    組件封裝v-model .sync在父子組件中實(shí)現(xiàn)雙向數(shù)據(jù)綁定 如何處理單向數(shù)據(jù)流 封裝表單組件

    使用watch監(jiān)聽 父組件使用.sync進(jìn)行數(shù)據(jù)的綁定 傳值子組件時(shí) 把值賦值到data的變量中 然后監(jiān)聽該數(shù)據(jù)的變化 $emit拋出 父組件demo 子組件 展示效果 使用綁定對象的方式打破單向數(shù)據(jù)流實(shí)現(xiàn) 父組件 子組件 參考vue官方及各插件庫的方案 使用計(jì)算屬性來保證雙向數(shù)據(jù)流 通過計(jì)算屬

    2023年04月19日
    瀏覽(26)
  • vue3 子組件實(shí)現(xiàn)v-model用法

    在Vue 3中,實(shí)現(xiàn)自定義的 input 組件并支持 v-model 綁定,涉及到對 modelValue 這個(gè)默認(rèn)prop的處理和對應(yīng)的 update:modelValue 事件的觸發(fā)。Vue 3使得這個(gè)過程比Vue 2更為簡化和靈活,尤其是在可以自定義綁定的屬性和事件名方面。 步驟 1: 創(chuàng)建自定義Input組件 首先,創(chuàng)建一個(gè)自定義的I

    2024年04月27日
    瀏覽(18)
  • 組件v-model(.sync)記錄使用(vue3)

    組件v-model(.sync)記錄使用(vue3)

    首先,讓我們來了解一下Vue3中v-model的用法。在Vue3中, v-model 指令可以用于自定義組件上,用于實(shí)現(xiàn)組件的雙向數(shù)據(jù)綁定。與Vue2中的 .sync 不同, Vue3中的v-model需要在組件中手動(dòng)實(shí)現(xiàn)雙向綁定邏輯。 下面是一個(gè)簡單的父組件示例,展示了如何在Vue3中使用 v-model 來實(shí)現(xiàn)組件的雙

    2024年01月19日
    瀏覽(26)
  • vue3-父子組件間通信

    在實(shí)際業(yè)務(wù)開發(fā)的過程中,我們時(shí)常會(huì)遇到組件間的通信問題,比如:父子組件間通信、同級組件間通信等。本篇文章中主要介紹父子組件間通信。父子組件間通信主要有以下常見形式: 方案 父組件向子組件 子組件向父組件 props/emits props emits v-model/emits v-model emits ref/emits

    2024年02月05日
    瀏覽(92)
  • Vue3.2+TS的組件間的v-model傳值

    組件之間的v-model,為什么可以v-model,大家可以去看看v-model的原理,然后就會(huì)發(fā)現(xiàn)這個(gè)方法一目了然。 父組件 子組件 假如子組件需要按照某個(gè)方法變化,那么可以自己定義,比如需要自增加50

    2024年02月13日
    瀏覽(26)
  • Vue3-在HTML標(biāo)簽、組件標(biāo)簽上使用v-model

    本篇為Vue3學(xué)習(xí)中遇到的v-model相關(guān)的記錄,如有問題歡迎指正 v-model通常在input、select等標(biāo)簽上來實(shí)現(xiàn)數(shù)據(jù)雙向綁定 原理 :v-model通過給標(biāo)簽value賦值來實(shí)現(xiàn)? 數(shù)據(jù)—頁面 的綁定。然后通過綁定input事件實(shí)現(xiàn) 頁面—數(shù)據(jù) 的綁定。 原理 :在組件上時(shí),v-model通過 :modelValue 來進(jìn)行

    2024年01月24日
    瀏覽(25)
  • VUE3+TS(父子、兄弟組件通信)

    目錄 父傳子值、方法(子調(diào)用父值、方法) 子傳父值(父調(diào)用子值) 父讀子(子傳父)(父調(diào)用子值、方法) 兄弟(任意組件)通信 引入Mitt來完成任意組件通信 1、統(tǒng)一規(guī)范寫法,通過在子組件標(biāo)簽上綁定屬性和值,來傳遞到子組件,子組件再通過defineProps來接收,先給其

    2023年04月08日
    瀏覽(21)
  • 【Vue技巧】Vue2和Vue3組件上使用v-model的實(shí)現(xiàn)原理

    ChatGPT4.0國內(nèi)站點(diǎn),支持GPT4 Vision 視覺模型:海鯨AI 在Vue中, v-model 是一個(gè)語法糖,用于在輸入框、選擇框等表單元素上創(chuàng)建雙向數(shù)據(jù)綁定。當(dāng)你在自定義組件中實(shí)現(xiàn) v-model 功能時(shí),你需要理解它背后的原理: v-model 實(shí)際上是一個(gè)屬性和一個(gè)事件的簡寫。 在 Vue 2.x 中, v-mode

    2024年01月15日
    瀏覽(30)
  • Vue3通信方式之defineProps、defineEmits、useAttrs、插件mitt和v-model

    Vue3通信方式之defineProps、defineEmits、useAttrs、插件mitt和v-model

    1、使用defineProps props可以實(shí)現(xiàn)父子組件通信,在vue3中我們可以通過defineProps獲取父組件傳遞的數(shù)據(jù)。且在組件內(nèi)部不需要引入defineProps方法可以直接使用! 父組件給子組件傳遞數(shù)據(jù) 子組件獲取父組件傳遞數(shù)據(jù):方式1 子組件獲取父組件傳遞數(shù)據(jù):方式2 子組件獲取到props數(shù)據(jù)就可以

    2024年02月11日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包