欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue3+Ts實現(xiàn)父子組件間傳值的兩種方式

 更新時間:2023年09月06日 10:22:31   作者:sKK07  
這篇文章主要給大家介紹了基于Vue3+Ts實現(xiàn)父子組件間傳值的兩種方式,使用v-model+emit傳值和使用v-bind+emit傳值兩種方式,文章通過代碼示例介紹的非常詳細,感興趣的同學(xué)可以參考閱讀

概覽

方式特點
v-model + emit簡單明了,無復(fù)雜操作時使用
v-bind + emit功能齊全,使用麻煩,推薦數(shù)據(jù)處理較多時使用

1、v-model+emit傳值

說明:v-model數(shù)據(jù)雙向綁定的指令。

1.1父向子傳遞數(shù)據(jù)

1.父組件引入子組件;

2.使用v-model綁定一個引入子組件的屬性(如:num);

3.子組件中使用defineProps接收。

1.2子向父傳遞數(shù)據(jù)

1.聲明defineEmites

2.在defineEmits中聲明(event: 'update:num', n: number): void;

3.進行事件觸發(fā)執(zhí)行emit('update:num', 40)

代碼示例:

// 父組件
<template>
    <div>
        <div>
            <div> 父組件 {{ num1 }}</div>
            <button @click="add">父按鈕</button>
        </div>
        <!-- v-model的傳值 -->
        <Child v-model:num="num1"></Child>
    </div>
</template>
<script setup lang="ts">
import Child from './02-AppChild.vue'
import { ref } from 'vue'
let num1 = ref(20)
const add = () => {
    num1.value++
}
</script>
<style scoped></style>
//子組件
<template>
    <div>
        <div>子組件{{ num }}</div>
        <div>{{ n }}</div>
        <button @click="hdClick">按鈕</button>
    </div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
let props = defineProps({
    num: {
        type: Number,
        default: 100
    }
})
const emit = defineEmits<{
    // update:固定寫法,后面的變量是父組件中v-model:后面的這個變量
    (event: 'update:num', n: number): void
}>()
let n = ref(props.num)
const hdClick = () => {
    // emit(上面event的值,要修改成的值)
    emit('update:num', n.value+=10)
}
</script>
<style scoped></style>

效果圖

2、使用v-bind+emit

說明:v-bind非雙向數(shù)據(jù)綁定,子組件傳來的數(shù)據(jù)需要進行賦值。

2.1父向子傳遞數(shù)據(jù)

1.父組件引入子組件;

2.使用v-bindl綁定一個引入子組件的屬性(如:num);

3.子組件中使用defineProps接收。

2.2子向父傳遞數(shù)據(jù)

1.聲明defineEmites;

2.在defineEmits中聲明(event: 'fn', n: number): void;

3.進行事件觸發(fā)執(zhí)行emit('fn',num3.value)

4.父組件中@fn對應(yīng)的chanNum接收參數(shù)并賦值。

代碼示例:

// 父組件
<template>
    <div>
        <!-- 父組件 -->
        <p>{{ num1 }}</p>
        <p>{{ num3 }}</p>
        <button @click="add">父按鈕</button>
        <Child :num="num1" @fn="chanNum"></Child>
    </div>
</template>
<script setup lang="ts">
import Child from "./11-AppChild.vue";
import { ref } from "vue";
let num1 = ref(10)
let num3 = ref(0)
const chanNum = (num33:number) => {
    num3.value=num33
}
const add = () => {
    num1.value++
}
</script>
<style scoped></style>
// 子組件
<template>
    <div>
        <!-- 子組件 -->
        <p>{{ num }}</p>
        <p>{{ num3 }}</p>
        <button @click="hdClick">按鈕</button>
    </div>
</template>
<script setup lang="ts">
import { ref } from "vue";
defineProps({
    num: {
        type: Number,
        default: 30
    }
})
let num3=ref(30)
// 子傳父的時候需要先定義好emit這個方法
const emit = defineEmits<{
	//fn為父組件引入子組件是定義的子組件事件屬性,可隨意定義
    (event: 'fn', n: number): void
}>()
const hdClick = () => {
    // vue2通過$emit("自定義事件名",參數(shù))
    num3.value+=2
    emit('fn',num3.value)
}
</script>
<style scoped></style>

效果圖

總結(jié)

  • 父向子組件傳參兩中方式并沒有太大區(qū)別,只是在引用子組件聲明屬性的時候一個是v-model一個是v-bind,在接收參數(shù)的時候則完全相同。
  • 對于子組件向父組件傳參則大為不同,v-model方式下父組件僅能單調(diào)的接收子組件傳來的參數(shù)不能對傳來的數(shù)據(jù)進行任何操作。除非單獨另寫邏輯進行處理。而v-bind方式下父組件在接收到子組件傳來參數(shù)的同時能在聲明的方法中對傳來的數(shù)據(jù)和父組件本身的數(shù)據(jù)進行任意處理。

以上就是Vue3+Ts實現(xiàn)父子組件間傳值的兩種方式的詳細內(nèi)容,更多關(guān)于Vue3+Ts父子組件間傳值的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue + Electron 制作桌面應(yīng)用的示例代碼

    vue + Electron 制作桌面應(yīng)用的示例代碼

    這篇文章主要介紹了vue + Electron 制作桌面應(yīng)用,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • 基于Vue2實現(xiàn)的仿手機QQ單頁面應(yīng)用功能(接入聊天機器人 )

    基于Vue2實現(xiàn)的仿手機QQ單頁面應(yīng)用功能(接入聊天機器人 )

    這篇文章主要介紹了基于Vue2實現(xiàn)的仿手機QQ單頁面應(yīng)用功能(接入聊天機器人 ),非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • Vue echarts模擬后端數(shù)據(jù)流程詳解

    Vue echarts模擬后端數(shù)據(jù)流程詳解

    在平常的項目中,echarts圖表我們也是使用的非常多的,通常我們從后端拿到數(shù)據(jù),需要在圖表上動態(tài)的進行呈現(xiàn),接下來我們就模擬從后端獲取數(shù)據(jù)然后進行呈現(xiàn)的方法
    2022-09-09
  • vue 指令和過濾器的基本使用(品牌管理案例)

    vue 指令和過濾器的基本使用(品牌管理案例)

    這篇文章主要介紹了vue-品牌管理案例-指令和過濾器的相關(guān)知識,文中通過代碼給大家介紹了過濾器的基本使用,需要的朋友可以參考下
    2019-11-11
  • Vite項目搭建與環(huán)境配置的完整版教程

    Vite項目搭建與環(huán)境配置的完整版教程

    Vite?使用?Rollup?作為默認的構(gòu)建工具,可以將應(yīng)用程序的源代碼打包成一個或多個優(yōu)化的靜態(tài)文件,本文就來為大家介紹一下Vite如何進行項目搭建與環(huán)境配置吧
    2023-09-09
  • 淺析Vue實例以及生命周期

    淺析Vue實例以及生命周期

    這篇文章給大家分享了Vue實例以及生命周期的相關(guān)知識點內(nèi)容,有興趣的朋友們可以學(xué)習下。
    2018-08-08
  • Vue3中的setup語法糖、computed函數(shù)、watch函數(shù)詳解

    Vue3中的setup語法糖、computed函數(shù)、watch函數(shù)詳解

    這篇文章主要介紹了Vue3中的setup語法糖、computed函數(shù)、watch函數(shù),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 淺談element關(guān)于table拖拽排序問題

    淺談element關(guān)于table拖拽排序問題

    本文主要介紹了element關(guān)于table拖拽排序問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • vue實現(xiàn)倒計時獲取驗證碼效果

    vue實現(xiàn)倒計時獲取驗證碼效果

    這篇文章主要為大家詳細介紹了vue實現(xiàn)倒計時獲取驗證碼效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Vue3中v-slot的特性深度剖析

    Vue3中v-slot的特性深度剖析

    在Vue3架構(gòu)里,v-slot 作為作用域插槽的關(guān)鍵支撐,重塑了父子組件間數(shù)據(jù)與方法傳遞的范式,本文主要來和大家剖析一下v-slot的相關(guān)特性,需要的可以了解下
    2025-01-01

最新評論