看一下官方文档:

组件实例的作用域是孤立的。这意味着不能 (也不应该) 在子组件的模板内直接引用父组件的数据。父组件的数据需要通过 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 {{ object.age }} years old.

',

props: ['object','school'],

data: function () {

// 子组件的childObject 和 父组件的object 指向同一个对象

return {

childObject: this.object

}

}

});

var app3 = new Vue({

el: '#app3',

data: {

object:{

name: 'Xueying',

age: '21',

},

school:'SCUT',

},

})

图2-改变childObject.name,object.name也改变

图3-控制台输出app3.object.name

4. props验证

可以为prop指定验证规则,如果传入的数据不符合要求,Vue会发出警告。

具体验证规则见官方文档:Prop验证规则

5. $parent

$parent 也可以用来访问父组件的数据。

而且子组件可以通过$parent 来直接修改父组件的数据,不会报错!

可以使用props的时候,尽量使用props显式地传递数据(可以很清楚很快速地看出子组件引用了父组件的哪些数据)。

另外在一方面,直接在子组件中修改父组件的数据是很糟糕的做法,props单向数据流就没有这种顾虑了。

以上所述是小编给大家介绍的Vue中props的详解详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

props写法_Vue中props的详解相关推荐

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

    Vue中props的详解 看一下官方文档: 组件实例的作用域是孤立的.这意味着不能 (也不应该) 在子组件的模板内直接引用父组件的数据.父组件的数据需要通过 prop 才能下发到子组件中. 也就是pr ...

  2. vue webpack 自动打开页面_vue中webpack技术详解

    1.为什么要使用webpack: 因为我们想把资源整合.如在项目index.html文件中为了请求变得更少我们可以新建一个叫main.js的项目入口文件(里面有引用其它的各种资源,而index.htm ...

  3. computed用发_Vue.js中computed使用详解

    这次给大家带来Vue.js中computed使用详解,Vue.js中computed使用的注意事项有哪些,下面就是实战案例,一起来看一下. JS属性: JavaScript有一个特性是Object.d ...

  4. js路由在php上面使用,React中路由使用详解

    这次给大家带来React中路由使用详解,React中路由使用的注意事项有哪些,下面就是实战案例,一起来看一下. 路由 通过 URL 映射到对应的功能实现,React 的路由使用要先引入 react-r ...

  5. Java中JDBC连接数据库详解

    今天动力节点java学院小编分享的是JDBC连接数据库的相关知识,希望通过看过此文,各位小伙伴对DBC连接数据库有所了解,下面就跟随小编一起来看看JDBC连接数据库的知识吧. 一.JDBC连接数据库概 ...

  6. js 正则中冒号代表什么_javascript中正则表达式语法详解

    好久都没有写博客了,主要是太懒了,尤其是在阳春三月,风和日丽的日子,太阳暖暖的照在身上,真想美美的睡上一觉.就导致了这篇博客拖到现在才开始动笔,javascript的正则这一块也不是什么新的东西,主要 ...

  7. Spring中,applicationContext.xml 配置文件在web.xml中的配置详解

    Spring中,applicationContext.xml 配置文件在web.xml中的配置详解 2016年10月04日 15:22:26 阅读数:7936 转自http://www.cnblogs ...

  8. html中transition默认,CSS3中的Transition详解

    W3C标准中对css3的transition这是样描述的:"css的transition允许css的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击.获得焦点.被点击或对元素任何改 ...

  9. Python中self用法详解

    Python中self用法详解 https://blog.csdn.net/CLHugh/article/details/75000104 首页 博客 学院 下载 图文课 论坛 APP 问答 商城 V ...

最新文章

  1. php扩展xdebug基本使用
  2. HTML复选框和提交按钮组合设置
  3. python 依赖库管理 包管理 pipreqs、pigar、pip-tools、pipdeptree 简介
  4. [蓝桥杯][2017年第八届真题]对局匹配
  5. 腾讯云服务器连接失败,启动报错:A start job is running for /etc/rc.d/rc.local Compatibility
  6. Linux下电子邮件服务器的配置与应用
  7. android无线充电技术,无线充电Qi通信协议分析,充电qi通信协议
  8. android自动清缓存,折腾Android系列 一键清理自动释放缓存
  9. 利用小波分解后,频率计算问题
  10. 南航C语言答案,2009-2011南航复试题(回忆版) 予人玫瑰,手有余香
  11. The JAVA_HOME environment variable is not defined correctly(亲测有效)
  12. 【BZOJ4049】[Cerc2014] Mountainous landscape(线段树+凸包+二分)
  13. Capstone CS5210规格书|低成本HDMI转VGA方案设计
  14. 【红帽rhcsa基础命令】
  15. excel VLOOKUP查找
  16. Java-SpringBoot-使用Sigar采集设备信息
  17. JVM优化:决定Java堆的大小以及内存占用
  18. 初次联系导师短信模板_复试消息汇总!复试资料到位,联系导师模板到位,只等你!...
  19. php rename函数_php中rename()函数
  20. DALSA线阵CCD开发纪要(C++)-- 缓冲区读

热门文章

  1. strtok分解字符串为一组字符串
  2. sma4win数据处理_[原创]Win10 SXE使用-申精
  3. 一种高分辨率高灵敏度的巨磁阻抗效应非晶丝微磁传感器研制
  4. Java基本数据类型所占空间
  5. 多亲 Qin3 Pro 参数 多亲 Qin3 Pro怎么样值得买吗
  6. c语言程序设计 教学内容,c语言程序设计都需要学什么内容
  7. Matlab编程实现二维空间内目标的匀速直线运动和匀速圆周运动
  8. python抓取取微博评论简单示例
  9. Matlab使用xlsread读xlsx文件报错处理
  10. MAC移动硬盘非正常断开连接后硬盘无法识别解决方案(超详细图文教程)