Vue中使用props

本文详细介绍了在Vue.js中如何使用props从父组件向子组件传递数据,包括简单接收、限制数据类型、指定必要性和默认值。通过实例展示了在App.vue和Student.vue组件中的应用,强调了props类型检查的重要性以及默认值的设定,帮助读者理解Vue组件间的数据通信机制。
摘要由CSDN通过智能技术生成

可以在Vue官网访问props。
组件使用props接收从外部传递过来的数据。
组件通过props接收数据,props有三种写法:

  1. 简单接收
  2. 接收,且限制类型
  3. 接收,且限制类型、限制必要性、指定默认值。

下面举例说明。
使用Vue脚手架创建项目,并对项目进行改造:新增了单文件组件:Student.vue,修改了单文件组件:App.vue。改造后的项目目录如下:
在这里插入图片描述

简单接收

props:["name","gender","age"]

App.vue内容如下。

<template>
    <div>
        <Student name="张三" gender="" age="25"/>
    </div>
</template>

<script>
import Student from "./components/Student";

export default {
    name:"App",
    components:{
        Student
    }
}
</script>

Student.vue内容如下。

<template>
    <div>
        <h1>{{msg}}</h1>
        <h2>学生姓名:{{name}}</h2>
        <h2>学生性别:{{gender}}</h2>
        <h2>学生年龄:{{age}}</h2>
    </div>
</template>

<script>
export default {
    name:"Student",
    data(){
        return {
            msg:"欢迎新同学!"
        }
    },
    props:["name","gender","age"]
}
</script>

接收,且限制类型

props:{
    name:String,
    gender:String,
    age:Number
}

接收,且限制类型props:{ name:String, gender:String, age:Number },即 组件从外部接收的name必须是字符串,gender必须是字符串,age必须是数值。
App.vue内容如下。

<template>
    <div>
        <Student name="张三" gender="" :age="20"/>
        <Student name="李四" gender="" :age="25"/>
    </div>
</template>

<script>
import Student from "./components/Student";

export default {
    name:"App",
    components:{
        Student
    }
}
</script>

注意!!! 这里是:ageage前面有:,意味着等号后面是表达式。因此 20 是数值20,不是字符串20;25 是数值25,不是字符串25。

Student.vue内容如下。

<template>
    <div>
        <h1>{{msg}}</h1>
        <h2>学生姓名:{{name}}</h2>
        <h2>学生性别:{{gender}}</h2>
        <h2>学生年龄:{{age+10}}</h2>
    </div>
</template>

<script>
export default {
    name:"Student",
    data(){
        return {
            msg:"欢迎新同学!"
        }
    },
    props:{
        name:String,
        gender:String,
        age:Number
    }
}
</script>

接收,且限制类型、限制必要性、指定默认值

props:{
    name:{
        type:String,
        required:true
    },
    gender:{
        type:String,
        required:true
    },
    age:{
        type:Number,
        default:18
    }
}

接收,且限制类型、限制必要性、指定默认值props:{ name:{ type:String, required:true }, gender:{ type:String, required:true }, age:{ type:Number, default:18 } },即 组件从外部接收的数据 name必须是字符串,且必须提供;gender必须是字符串,且必须提供;age必须是数值,如果未提供,默认值是18。

App.vue内容如下。

<template>
    <div>
        <Student name="张三" gender="" :age="20"/>
        <Student name="李四" gender="" :age="25"/>
        <Student name="韩梅梅" gender=""/>
    </div>
</template>

<script>
import Student from "./components/Student";

export default {
    name:"App",
    components:{
        Student
    }
}
</script>

注意!!! 这里也是:age。且第三个Student并没有传入age。

Student.vue内容如下。

<template>
    <div>
        <h1>{{msg}}</h1>
        <h2>学生姓名:{{name}}</h2>
        <h2>学生性别:{{gender}}</h2>
        <h2>学生年龄:{{age}}</h2>
    </div>
</template>

<script>
export default {
    name:"Student",
    data(){
        return {
            msg:"欢迎新同学!"
        }
    },
    props:{
        name:{
            type:String,
            required:true
        },
        gender:{
            type:String,
            required:true
        },
        age:{
            type:Number,
            default:18
        }
    }
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值