前端(vue)入門到精通課程:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:
⭐⭐
這裡我們知道,父元件有一些資料需要子元件來進行展示,那我們可以通過props
來完成元件之間的通訊
通過props來完成元件之間的通訊
⭐⭐
那麼什麼是Props
呢?
Props
是你可以在元件上註冊一些自定義的attribute(屬性);在使用 script setup
的單檔案元件中,props
可以使用 defineProps()
宏來宣告:
<script setup>
const props = defineProps(['foo'])
console.log(props.foo)
</script>
登入後複製
1)陣列型別
在沒有使用 script setup
的元件中,prop
可以使用 props
選項來宣告:
export default {
props: ['foo'],
setup(props) {
// setup() 接收 props 作為第一個引數
console.log(props.foo)
}
}
登入後複製
例子,物件語法的使用
App.vue
裡面使用元件,屬性整數props所定義的
<template>
<show-info name="kk" age="18" height="1.7" />
</template>
登入後複製
showInfo.vue
子元件
export default {
props:{
name :{
type:String,
default:"我是預設值name"
},
height:{
type:Number,
default:2
}
}
}
登入後複製
另外:
那麼type的型別都可以是哪些呢?
2)物件型別
用物件
的形式宣告props
(這個還挺常用的)
使用 script setup
defineProps({
title: String,
likes: Number
})
登入後複製
非 script setup
export default {
props: {
title: String,
likes: Number
}
}
登入後複製
⭐⭐
子元件傳遞給父元件通過$emit觸發事件
子元件傳遞內容到父元件:
$emit(「add」, count)
第一個引數自定義的事件名稱,第二個引數是傳遞的引數
⭐⭐
舉一個計數器案例
1)父元件App.vue
<template>
<div class="app">
<h2>當前計數:{{counter}}</h2>
<!-- 1.自定義add-counter 並且監聽內部的add事件 -->
<add-counter @add="addBtnClick"></add-counter>
<!-- 2.自定義su-counter元件,監聽內部的sub事件 -->
<sub-counter @sub="subBtnClick"></sub-counter>
</div>
</template>
<script>
import AddCounter from './AddCounter.vue'
import SubCounter from './SubCounter.vue'
export default {
components: {
AddCounter,
SubCounter
},
data() {
return {
counter:0
}
},
methods:{
addBtnClick(count) {
this.counter += count
},
subBtnClick(count) {
this.counter -= count
}
}
}
</script>
登入後複製
2)子元件1AddCounter.vue
這裡定義的是計數器的加操作
子元件事件觸發之後,通過this.$emit的方式進行發出事件
<template>
<div class="add">
<button @click="btnClick(1)">+1</button>
<button @click="btnClick(5)">+5</button>
<button @click="btnClick(10)">+10</button>
</div>
</template>
<script>
export default {
methods:{
btnClick(count) {
// 讓子元件發出去一個自定義事件
// 第一個引數自定義的事件名稱,第二個引數是傳遞的引數
this.$emit("add",count)
}
}
}
</script>
登入後複製
3)子元件2SubCounter.vue
這裡定義的是計數器的減操作
子元件事件觸發之後,通過this.$emit
的方式進行發出事件
<template>
<div class="sub">
<button @click="btnClick(1)">-1</button>
<button @click="btnClick(5)">-5</button>
<button @click="btnClick(10)">-10</button>
</div>
</template>
<script>
export default {
// 1.emits陣列語法
emits:["addd"],
methods:{
btnClick(count) {
this.$emit("sub",count)
}
}
}
</script>
登入後複製
這個案例非常經典,可以反覆琢磨一下~
(學習視訊分享:)
以上就是淺析Vue中父子元件間怎麼通訊(父傳子|子傳父)的詳細內容,更多請關注TW511.COM其它相關文章!