Vue学习:配置项props的配置,让组件接收外部传递的数据

组件之间可以独立

实现复用:另外的一个人 其他一样 名字、年龄不同

在传入时候 进行参数配置

<template>
    <div>   
        <Student name="小王" sex="男" age="16"/>   
        <Student name="小李" sex="女" age="14"/>     
    </div>
</template>

在子组件中对传入的参数确定使用使用props简单接收

<script>
    export default {
        name: 'Student',
        data() {
            return {
                msg:'学生信息'
            };
        },
        props:['age','name','sex'],//需要外部传入的参数 需要确认使用,顺序无所谓 简单接收
      
    };
</script>

实现年龄+1:使用绑定传入的参数的就变成了表达式

<template>
    <div>   
        <!-- : 传递的就变成了表达式-->
        <Student name="小王" sex="男" :age="16"/>   
        <Student name="小李" sex="女" age="14"/>     
    </div>
</template>
<template>
    <div class="student">
        <h1>{{msg}}</h1>
        <h2>学生姓名:{{name}}</h2>
        <h2>学生性别:{{sex}}</h2>
        <!-- 实现年龄+1 -->
        <h2>学生年龄:{{age+1}}</h2>
    </div>
</template>

<script>
    export default {
        name: 'Student',
        data() {
            return {
                msg:'学生信息'
            };
        },
        props:['age','name','sex'],//需要外部传入的参数 需要确认使用,顺序无所谓 简单接收

对传入的参数做限制类型 使用props 接收同时做限制

        props:{//对类型做限制
            name:String,
            age:Number,
            sex:String
        }
    };

Invalid prop: type check failed for prop "age". Expected Number with value 14, got String with value "14"

props配置限制 prop是属性 单个标识一个

//接收的同时对数据类型进行限制+默认值的指定+必要性的限制

       props:{
        name:{
            type:String,//name的类型
            required:true//name是必要的
        },
        age:{
            type:Number,//name的类型
            default:99//默认值 不是必要的
        },
        sex:{
            type:String,//sex的类型
            required:true//sex是必要的
        }
       }
<template>
    <div>   
        <!-- : 传递的就变成了表达式-->
        <Student name="小王" sex="男" :age="16"/>   
        <Student name="小李" sex="女" />     
    </div>
</template>

更改传入的参数,修改传入的数据

<template>
    <div class="student">
        <h1>{{msg}}</h1>
        <h2>学生姓名:{{name}}</h2>
        <h2>学生性别:{{sex}}</h2>
        <!-- 实现年龄+1 -->
        <h2>学生年龄:{{myage}}</h2>
        <button @click="updateAge">修改接收到的年龄</button>
    </div>
</template>
<template>
    <div class="student">
        <h1>{{msg}}</h1>
        <h2>学生姓名:{{name}}</h2>
        <h2>学生性别:{{sex}}</h2>
        <!-- 实现年龄+1 -->
        <h2>学生年龄:{{myage}}</h2>
        <button @click="updateAge">修改接收到的年龄</button>
    </div>
</template>

原因在于props传入的参数更高级别

            export default {
        name: 'Student',
        data() {
            return {
                msg:'学生信息',
               myage:this.age,//值传入的
            };
        },

       //接收的同时对数据类型进行限制+默认值的指定+必要性的限制
       props:{
        name:{
            type:String,//name的类型
            required:true//name是必要的
        },
        age:{
            type:Number,//name的类型
            default:99//默认值 不是必要的
        },
        sex:{
            type:String,//sex的类型
            required:true//sex是必要的
        }
       },
       methods: {
        updateAge(){
            this.myage++
        }
       },
    };

配置项props

功能:让组件接收外部传递的数据

1、传递数据 <组件名 参数名称="xxx">

2、接收数据

a、只接收

props:["参数名称"]

b、限制类型

props:{

参数名称:String

}

c、限制类型、限制必要性、指定默认值

props:{

参数名称:{

type:String,//类型

required:true//参数是必要的

default:99//默认值

}

}

props是只读的,Vue底层会监测你对props的修改,如果你进行了修改,就会发出警告,

如果需求对props进行修改,可以复制props内容到date中一份,然后对data中的数据进行修改

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值