组件传递多种数据类型
通过props传递数据,不仅可以传递字符串类型的数据,还可以是其他类型,例如:数字、对象、数组等,但实际上任何类型的值都可以作为props的值被传递(即组件与组件之间的传递是没有限制的)
传递数字类型
在父级中添加age,通过v-bind绑定属性,再在下面声明age=20使可以传递数字类型

数组类型array传递
父级
<template>
    <h3>Parent</h3>
    <Child :title=" message" :age="age" :names="names"/>
    <!-- v-bind把后面变成动态的数据 -->
</template>
<script>
import Child from "./Child.vue"
export default {
    data() {
        return{
            message:"Parent数据!",
            age:20,
            names:["anna","amy","ewan"]
        }
    },
    components:{
        Child
    }
}
</script>子集
<template>
    <h3>Child</h3>
    <p>{{ title }}</p>
    <p>{{age }}</p>
    <!-- 用模板语法的方式让其显示 -->
    <ul>
        <li v-for="(item,index) of names" :key="index">{{ item }}</li>
    </ul>
</template>
<script>
export default {
    data() {
        return{
            
        }
    },
    props:["title","age","names"]//在这里以字符串形式存在
}
</script>object对象
父级:
<template>
    <h3>Parent</h3>
    <Child :title=" message" :age="age" :names="names" :userInfo="userInfo"/>
    <!-- v-bind把后面变成动态的数据 -->
</template>
<script>
import Child from "./Child.vue"
export default {
    data() {
        return{
            message:"Parent数据!",
            age:20,
            names:["anna","amy","ewan"],
            userInfo:{
                name:"anna",
                age:20
            }
        }
    },
    components:{
        Child
    }
}
</script>子集
<template>
    <h3>Child</h3>
    <p>{{ title }}</p>
    <p>{{age }}</p>
    <!-- 用模板语法的方式让其显示 -->
    <ul>
        <li v-for="(item,index) of names" :key="index">{{ item }}</li>
    </ul>
    <p>{{ userInfo.name }}</p>
    <p>{{ userInfo.age }}</p>
</template>
<script>
export default {
    data() {
        return{
            
        }
    },
    props:["title","age","names","userInfo"]//在这里以字符串形式存在
}
</script>组件传递props效验
vue组件可以更细致地声明传入props的效验要求,检验传递的数据是否为设定的数据
在A组件中引入B
<template>
    <h3>ComponentA </h3>
    <componentB />
</template>
<script>
import ComponentB from "./ComponentB.vue"
export default {
    data(){
        return{
        }
    },
    components:{
        ComponentB
    }
}
</script>如下为B组件
<template>
    <h3>ComponentB </h3>
</template>
<script>
export default{
    data(){
        return{
            
        }
    }
}
</script>在组件B中设置一个检验:
要求传递的类型是string,若是侧检查代码不报错。不是 ➡️虽然能显示,但右键检查代码提示报错
当然也可以接收多个类型,兼容性很好
默认值
默认值指目前设置了一个没有传入数值的空,页面不显示,为了让页面显示,设置一个默认值0之类的数字,使未传入时数字为0并显示
<template>
    <h3>ComponentB </h3>
    <p>{{ title }}</p>
    <p>{{ age }}</p>
    <!-- 为了让title显示出来 -->
</template>
<script>
export default{
    data(){
        return{
            
        }
    },
    //为让B显示增加一个
    props:{
        title:{
            type:[String,Number,Array,Object]
        },
        age:{
            type:Number,
            default:0
        }
    }     
}
</script>未传入

传入后,数值更改
如下为A组件中传入数值的代码
 
 
注意:数字和字符串可以直接default,但是如果是数组和对象,必须通过工厂函数返回默认值
如上所示 
必选项

这个必选项很霸道,不传它想要的数据就报警告,如上,我在title里面写了必选项,如果上面我将title删掉,则报警告
组件与组件传递之间有类型的限制,有默认值和必选项的限制
注意:prop是只读的





















