第一种方式(只接收):
props: [ "name"]
第二种方式(限制类型):
props:{
name:Number
}
第三种方式(限制类型、限制必要性、指定默认值):
props:{
name:{
type:String,//类型
required:true,//必要性
default:"老王"//默认值
}
}
首先,可以传递给prop一个静态值,像下边这样
<Demo title="hello world">Demo>
也可以通过 v-bind 动态赋值,例如
<Demo
v-bind:title=" 'hello' + 'world' "
>Demo>
prop是可以传任何类型的值的,但是需要用到 v-bind
<Demo
v-bind:num="111"
>Demo>
<Demo
v-bind:is_false="false"
>Demo>
<Demo1
v-bind:arr="[1, 2, 3]"
>Demo>
<Demo2
v-bind:arr="array"
>Demo>
<Demo1
v-bind:obj="{
name: 'lx',
age: '22'
}"
>Demo>
<Demo2
v-bind:obj="person"
>Demo>
自定义事件是子组件给父组件传递参数的一种方式。一般是在子组件中使用 this.$emit(“eventName”, …args) 来触发事件,而在父组件中使用 v-on 绑定 eventName 事件,等待子组件触发。
举个例子:
在子组件中:点击发送按钮就用 emit 触发父组件中监听的事件,从而实现给父组件传参
<template>
<button @click="send">给父组件发送信息button>
template>
<script>
export default {
components: {
sonCompenent,
},
data() {
return {
msg: "i am son",
}
},
methods: {
send() {
this.$emit("receiveData", msg)
},
},
};
script>
在父组件中:子组件触发emit之后,父组件中的监听到了receiveData事件,然后触发recv方法,将子组件传递的信息放到data.msg中
<template>
<span @receiveData="recv">span>
template>
<script>
export default {
components: {
fatherCompenent,
},
data() {
return {
msg: "",
}
},
methods: {
recv(dataFromSon) {
this.msg = dataFromSon.msg
},
},
};
script>
关于事件总线,作者看到了一篇写的很好的文章,作者也写不出水平和这篇差不多的,所以直接看大佬的吧。传送门
插槽是父组件向子组件传参的一种方法
作者在此之前已经写过slot插槽的相关介绍,所以直接跳转
作者在此之前已经写过slot插槽的相关介绍,所以直接跳转