vue 官方文档中你没注意到的知识点

prop 传入一个对象的所有属性

例如,对于一个给定的对象 message :

message: { 
  github: 'https://github.com/yeyi361936738/notebook',
  name: 'YEYI'
}
复制代码

下面的模版:

<component v-bind='message'></component>
复制代码

相当于:

<component
  v-bind:github='message.github'
  v-bind:name='message.name'
>
</component>
复制代码

prop 单向数据流

所有的 prop 使得父子组件之间形成了一个单向乡下绑定。 父级组件 prop 更改会向下流入到子组件中,子组件的数据也会更新。反之,则不行,控制台将会报错。

以下是两种常见的需要改变 prop 值的情况

  1. 这个 prop 用来传递一个初始值,这个子组件接下来希望将其作为一个本地 data 使用。 这种情况下,可以定一个本地的 data 并将这个 prop 赋值。
props: {
  initValue
}
data(){
  return{
      value: this.initValue
  }
}
复制代码
  1. 这个 prop 以原始值传入且需要转化。 这种情况下,使用 computed 来转化 prop。
props: {
  initValue
}
computed: {
  value: () => {
    //进行数据转化
    return this.initValue.split(' ')
  }
}
复制代码

注意点: JavaScript对象是通过引入的方式传入的,更改 prop 传入的对象属性,父组件也会改变。因此对象需要进行深拷贝。

prop 验证

自定义验证函数

props: {
  propA: {
    initValue: (value) => {
      // 这个值必须匹配下列字符串中的一个
      return ['success', 'warning', 'danger'].indexOf(value) !== -1
    }
  }
}
复制代码

类型检查,自定义构造函数

类型检查 type 可以是下列原声构造函数中的一个:

  • String
  • Number
  • Boolean
  • Array
  • Function
  • Object
  • Symbol
  • Date

额外的,type 还可以是一个自定义的构造函数,并且通过 instanceof 来进行检查确认。例如,给定下列县城的构造函数:

function Person(firstname, lastname){
  this.firstname = fistname
  this.lastname = lastname
}
复制代码

你可以使用:

Vue.component('component', {
  props: {
    author: Person
  }
})
复制代码

来验证 author 是否是通过 new Person 构造的。

未完待续,持续更新中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值