Vue中的 props 属性

1.什么是 props 

         props 用于组件的传值,他的工作就是为了接受外面传过来的数据,是一个配置项,与data、el、ref 是一个级别的。

2.props 的使用

        --1 先准备子组件 Text1.vue ,一个父组件 app.vue ,在 App.vue 中导入两个子组件

        --2 在 App.vue 中 导入 text1.vue 组件

         --3 在父组件中子组件标签里传数据给子组件

<template>
  <div>
    <text1 name= "张胜男" brith="2002" age="20"></text1>
  </div>
</template>

        --4  在子组件定义 props 对象,里面包含三个数据,在 template标签 中 div标签 里面使用此数据

 3.props 属性

        --1 props 数据有类型之分

                

我们先来看一下输出的结果,生日和年龄看似是数字类型,实际上是字符串类型,通过 Vue 调试工具可以看到是字符串类型。

 


在这种情况下:实现生日 +1 的功能,会怎样呢,会不会报错?

<template>
  <div>
    <text1 name= "张胜男" brith="2002 + 1" age="20"></text1>
  </div>
</template>


可以看到并没有报错,但生日这项并没有像我们预期的一样是 2003,所有应该怎样操作?

--- 我们可以 在 brith 前面加一个 ' :' 符号冒号,再看看结果:

<template>
  <div>
    <text1 name= "张胜男" :brith="2002 + 1" age="20"></text1>
  </div>
</template>

  

可以看见现在结果是我们想要的 2003。

同理我们把年龄前面加上冒号,为了确保正确在Vue控制台也可看见结果如下:


为了防止操作失误传错数据(虽然不影响显示,但是影响字符串拼接、数字计算)

我们就需要限制一下数据的类型。代码演示:

props: {
        "name": String,
        "brith": Number,
        "age": Number
    },

        --2 props 数据不可更改

如何实现年龄更改呢?

<button @click="changeAge">修改年龄</button>


methods: {
        changeAge() {
            this.age = 88
        }
    },


--- 可以看见,年龄虽然可以修改,但是有个警告!

--- 解决方案:我们需要使用一个中间值 temp 接收传来的 props 数据,然后对 temp 更改即可。

  data() {
        return {
            temp: this.age
        }
    },

    methods: {
        changeAge() {
            this.temp = 88
        }
    },

 注意:原来的年龄插值是 {{ age }},但是使用此方法, 年龄插值就需要改变为 {{ temp }} 

         -- props 设置必传数据(数值不可为空),和属性默认值

用对象的方法定义单个数据:

props: {
        'name': {
            type: String,
            default: '刘德华',
            required: true
        },
        'brith': {
            type: Number
        },
        'age': {
            type: Number
        }
    },

如果在 App.vue 中不传数据,那结果会怎样?

解析:我们设置了 default: ' 刘德华 ',那么属性 name 就会取 ' 刘德华 '。

如果我们去掉 default 那一项,留下 required: true, 结果会怎样?

结果是会有警告:

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

John Rivers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值