vue 父子组件传值 props验证

props文档

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>父子组件传值_props验证 </title>
    <script src="./vue.js"></script>
</head>
<body>
    <div id="app">
        <my-child :list="plist"></my-child>
    </div>
    
    <template id="child">
        <div>
            props Number default : {{number}}
            <br>
            props String default : {{str}}
            <br>
            props Object deafult :{{obj}}
            <ul>
                <li v-for="item in list" :key="item.id">{{item.name}}</li>
            </ul>
        </div>
    </template>
    <script>
        // 全局注册组件
        Vue.component('myChild',{
            template:'#child',
            props:{
                list:{
                    type: Array, // 类型  String Number Boolean Array Object Date Function Symbol
                    // default: []  //这个写法2.5以下没问题
                    default: function(){   // 类型是对象或者数组时 默认值必须是一个函数
                        return []
                    }
                },
                number: {
                    type: Number,
                    default: 100
                },
                str:{
                    type: String,
                    // required: true, //必传 
                    default: 'aaa'  // 默认值
                },
                obj:{
                    type: Object, 
                    default: function(){   // 类型是对象或者数组时 默认值必须是一个函数
                        return {name:'对象默认值 名称'}
                    }
                },

                // 多个类型
                duo:[Number,String],
                  
                // 自定义验证 name
                name:{
                    validator:function(value){
                        // 验证
                        // value !== null

                        // 返回验证结果
                        return true 
                    }
                }

                // 自定义 类型

            },
            data:()=>({

            })
        })
        
        new Vue({
            el:'#app',
            data:{
                plist:[{name:'aa',id:1},{name:'cc',id:2},{name:'gg',id:3}]
            }
        })
    </script>
</body>
</html>

在这里插入图片描述

Vue是一个以数据驱动、组件化的前端框架,其中,组件化是Vue中较为重要的概念之一,组件之间的通信则成为Vue中较为普遍的需求。 Vue中有两种组件的关系,一种是父子之间的关系,一种是兄弟之间的关系,父子组件之间的通信则可以通过props和value实现。 在Vue组件中,可以通过prop绑定属性的方式将数据传递给子组件,子组件通过props接收组件的数据并进行操作。 例如,组件中定义props属性: ``` <template> <child-component :name="name"></child-component> </template> <script> export default { name: 'parent-component', data() { return { name: 'Tom' } }, components: { 'child-component': childComponent } } </script> ``` 子组件则需要在props中声明接收组件name数据: ``` <template> <div>{{name}}</div> </template> <script> export default { name: 'child-component', props: { name: { type: String, required: true } } } </script> ``` 在组件中,通过:name属性将name数据传递给child-component组件,在子组件props中,声明name属性,类型为String,并设置required为true,则组件必须传递name数据给子组件,否则会抛出错误。 当组件的数据发生变化时,子组件也会及时更新,这时就可以通过子组件中的计算属性或方法对prop数据进行处理或者对传递的数据进行一些额外的操作。 以上就是Vue父子组件传值props value的简单介绍,掌握好这个知识点可以更好地理解Vue组件的通信方式,提高开发效率和代码的可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值