props写法_Vue中props的用法知识点

本文详细介绍了Vue中props的使用,包括基本用法、camelCase与kebab-case的区别、单向数据流原则以及props验证。强调了不要在子组件内修改props,并提供了正确的处理方式,如使用局部变量或计算属性。同时提到了$parent的使用,虽然可以访问并修改父组件数据,但不推荐这样做。最后,建议尽量使用props显式传递数据,遵循props down, events up的设计原则。" 109304451,10168659,Vue.js时间格式化技巧,"['vue.js', 'javascript', '前端开发', '时间处理']
摘要由CSDN通过智能技术生成

Vue中props的详解

看一下官方文档:

组件实例的作用域是孤立的。这意味着不能 (也不应该) 在子组件的模板内直接引用父组件的数据。父组件的数据需要通过 prop 才能下发到子组件中。

也就是props是子组件访问父组件数据的唯一接口。

详细一点解释就是:

一个组件可以直接在模板里面渲染data里面的数据(双大括号)。

子组件不能直接在模板里面渲染父元素的数据。

如果子组件想要引用父元素的数据,那么就在prop里面声明一个变量(比如a),这个变量就可以引用父元素的数据。然后在模板里渲染这个变量(前面的a),这时候渲染出来的就是父元素里面的数据。

1. 基本用法

图1-props

var com1 = Vue.component('child',{

// 声明在prop中的变量可以引用父元素的数据

props:['hello'],

// 这里渲染props中声明的那个hello

template:'

{ { hello }}

',

})

var app1 = new Vue ({

el: '#app1',

data: {

greet: {

hello:'hello,',

world: 'world',

},

message: 'message1',

}

})

2. camelCase vs. kebab-case:js中用驼峰式命名,在html中替换成短横线分隔式命名

Vue.component('child', {

// 在 JavaScript 中使用 camelCase

props: ['myMessage'],

template: '{ { myMessage }}'

})

3.单向数据流: props是单向绑定的

当父组件的属性变化时,将传导给子组件,但是反过来不会。

每次父组件更新时,子组件的所有 prop 都会更新为最新值。

不要在子组件内部改变 prop。如果你这么做了,Vue 会在控制台给出警告。

在两种情况下,我们很容易忍不住想去修改 prop 中数据:

Prop 作为初始值传入后,子组件想把它当作局部数据来用;

Prop 作为原始数据传入,由子组件处理成其它数据输出。

对这两种情况,正确的应对方式是:

定义一个局部变量,并用 prop 的值初始化它:

props: ['initialCounter'],

data: function () {

return { counter: this.initialCounter }

}

定义一个计算属性,处理 prop 的值并返回:

props: ['size'],

computed: {

normalizedSize: function () {

return this.size.trim().toLowerCase()

}

}

注意在 JavaScript 中对象和数组是引用类型,指向同一个内存空间,如果 prop 是一个对象或数组,在子组件内部改变它会影响父组件的状态。

举个例子:

//

var mycom = Vue.component('my-component', {

//添加一个input改变子组件的childOject,那么父元素的object也会被改变,但是Vue没有报错!

template: '

{ { object.name }} is { {

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值