vue进阶内容总结--Prop (二)

本文详细介绍了Vue组件中Prop的使用,包括Prop的大小写规则、类型定义、单向数据流、验证方法以及如何处理非Prop特性。重点讨论了如何传递不同类型的值,如数字、布尔、数组和对象,并强调了不应在子组件内部直接修改Prop。
摘要由CSDN通过智能技术生成

Prop

Prop的大小写(camelCase vs kebab-case)

HTML 中的特性名是大小写不敏感的,所以浏览器会把所有大写字符解释为 小写字符。这意味着当你使用  DOM 的模板时,camelCase(驼峰命名法)的 prop名需要使用其等价的 kebab-case(短横线分隔命名)命名:

Vue.component('blog-post',{
    // 在JavaScript 中是 camelCase的
    props:['postTitle'],
    template:'<h3> {
  { postTitle }} </h3>'
})
<!-- 在 HTML 中是 kebab-case 的 -->
<blog-post post-tittle="hello!"></blog-post>

重申一次,如果你使用字符串模板,那么这个限制就不存在了。

 

Prop类型

到这里,我们只看到了以字符串数组形式列出的 prop:

props:['tittle','likes','other']

但是,通常我们都希望每个 prop 都有一个指定的值类型。这时,我们可以以对象形式列出 prop,这些属性的名称和值分别是 prop 各自的名称和类型:

prop:{
    tittle:string,
    likes:Number,
    isPublished:Boolean,
    commentIds:Array,
}

这不仅为你的组件提供了文档,还会在它们遇到错误的类型时从浏览器的 JavaScript 控制台提示用户。我们会在这个页面接下来的部分看到 类型检查和其他 prop 验证。

传递静态或动态 Prop

像如下这样,我们已经知道这样给 prop 传入一个静态的值:

<blog-post tittle="My journey with Vue"></blog-post>

我们都知道 prop 可以通过 v-bind 动态赋值,例如:

<!-- 动态赋予一个变量的值 -->
<blog-post v-bind:tittle="post.tittle"></blog-post>

<!-- 动态赋予一个复杂表达式的值 -->
<blog-post 
v-bind:tittle="post.tittle + ' By ' post.author.name"></blog-post>

在上面的例子中,我们传入的值都是字符串类型的,但实际上任何类型的值都可以传给一个 Prop。

 

传入一个数字

<!-- 即便 `42` 是静态的,我们仍然需要 `v-bind` 来告诉 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值