组件组织

通常一个应用会以一棵嵌套的组件树的形式来组织。–VUE:组件化、数据驱动

组件复用性

可以将组件进行任意次数的复用,例如,利用组件定义一个超级链接,在项目中多次使用

<!-- 引用组件 --><my-aaa></my-aaa><my-aaa></my-aaa><my-aaa></my-aaa>
//注册组件Vue.component('my-aaa',{template:`<a href="#">百度</a>`})//页面出现三个百度由此看来组件的复用性

识别组件

组件分为父组件与子组件怎么识别呢?
①在js中创建注册组件的代码被称为“子组件”(组件模板→子组件)
②在HTML文档中引用组件的代码被称为“父组件”(组件引用→父组件)

<!-- 父组件 --><my-aaa></my-aaa><my-aaa></my-aaa><my-aaa></my-aaa>// 子组件template:`<a href="#">百度</a>`

小结:注册处为子组件、引用处为父组件。

props传值

子组件的数据有时需要从父组件获取调用,此时便可以用props 从父级接收数据,props 的值可以是两种,字符串数组或者对象。

接下来主要介绍下字符串数组的用法。

<my-aaa dsa="做个俗人"></my-aaa>
//用props传值得方法Vue.component('my-aaa',{props:['dsa'],// 子组件template:`<div>友情链接:<a href="#">百度</a>,(<b>{{dsa}}</b>)</div>`})

props-动态传值

动态传值:日常开发里,传递的数据并不是直接写死的,而是来自父级的动态数据,使用指令 v-bind来动态绑定 props 值,当父组件的数据变化时,也会传递给子组件
代码如下

//html代码
<my-aaa :dsa="dsaValue"></my-aaa>
//js代码Vue.component('my-aaa',{props:['dsa'],// 子组件template:`<div>友情链接:<a href="#">百度</a>,(<b>{{dsa}}</b>)          </div>`})var demo=new Vue({el:"#demo",data:{dsaValue:'一辈子做个俗人也挺好的'}            })

如何给文章做一个标题代码如下

<my-aaa :dsa="dsaValue"></my-aaa>
//jsVue.component('my-aaa',{props:['dsa'],// 子组件template:`<div><h3>{{dsa}}</h3>           </div>`})var demo=new Vue({el:"#demo",data:{dsaValue:'新书上架'}           })

注意事项:
1、子组件通过props接收父级组件传递的数据
2、由于HTML特性不区分大小写,当使用 DOM 模板时,驼峰命名的 props 名称要转为短横分隔命名 。
(即HTML中引用是短横分隔命名blog-title,JS的DOM模板里为小驼峰命名blogTitle,两者可以对应识别)

props传值-多个值,
接下来从父级组件给传入文章标题、作者等信息
代码如下:

<div id="demo"><my-aaa:biaoti="biaotiValue":neirong="neirongValue":zuozhe="zuozheValue"></my-aaa></div></body><script src="js/vue-2.6.9.min.js" type="text/javascript" charset="utf-8"></script><script type="text/javascript">Vue.component('my-aaa',{props:['biaoti','zuozhe'],template:`<div><h3>{{biaoti}}</h3><p>{{neirong}}</p><i>{{zuozhe}}</i>  </div>`,data:function(){return{neirong:`返点卡拉夫加拿大萨减肥的萨科技刀剑三京东方康`} }})       var demo=new Vue({el:"#demo",data:{biaotiValue:'红楼梦',zuozheValue:'曹雪晴'}})

改变 props

业务中会经常遇到两种需要改变 props 情况
(1)父组件传值→子组件保存初始值(初始化后解耦)
第一种是父组件传递初始值进来,子组件将它作为初始值保存起来,在自己的作用域下可以随意使用和修改。这种情况可以在组件 data 再声明一个数据,引用父组件的 props ,示例代码如下:
案例解析:
组件中声明了数据 childValue它在组件初始化时会获取来自父组件的 countValue之后就与之无关了,只用维护 childValue,这样就可以避免直接操作父级组件count数据。
(2)被转变的原始值
另一种情况就是 props作为需要被转变的原始值传入。这种情况用计算属性就可以了。示例代码如下

总结

(1)组件组织:通常一个应用会以一棵嵌套的组件树的形式来组织,VUE两大核心思想–组件化、数据驱动。
(2)组件复用性:可以将组件进行任意次数的复用
(3)单个根元素限制:every component must have a single root element (每个组件必须只有一个根元素)
(4)识别父组件与子组件:注册处为子组件、引用处为父组件
(5)props传值:通过 Prop 向子组件传递数据,即子组件的数据有时需要从父组件获取调用,此时便可以用props 从父级接收数据

VUE之组件(复用性、props、单向数据流)相关推荐

  1. Vue.js 组件复用和扩展之道

    作者简介: 李中凯 八年多工作经验 前端负责人, 擅长JavaScript/Vue. 掘金文章专栏:https://juejin.im/user/57c7cb8a0a2b58006b1b8666/po ...

  2. vue父子组件间传值(props)

    先定义一个子组件,在组件中注册props <template><div><div>{{message}}(子组件)</div></div> ...

  3. 【Vue】组件复用导致的路由切换时页面不刷新问题

    页面逻辑 通过router-link,携带不同params参数,导航向同一个组件. 出现问题1 不同路由切换时组件上的页面不刷新. 问题原因1 mounted() {this.getData();}, ...

  4. Vue关于双向绑定和单向数据流的理解

    很多接触Vue开发不久的同学会有疑问,vue既然是单向数据流为什么会有双向绑定一说? 关于Vue数据绑定首先引用官网原话: AngularJS 使用双向绑定,Vue 在不同组件间强制使用单向数据流.这 ...

  5. vue单向数据流与双向绑定两者区别

    1.Vue 在不同组件间强制使用单向数据流,父组件可以向子组件传递数据,但是子组件不能直接修改父组件的状态. 2.数据的双向绑定 主要由MVVM框架实现,主要由三部分组成View.ViewModel和 ...

  6. vue的组件和es6模板引擎 组件

    今天学习了: 要在父实例中使用这个组件,必须要在实例创建前注册,之后就可以用<组件名></组件名>形式来使用组件了 全局组件注册步骤小结: ①注册组件component并命名 ...

  7. Vue 父子组件间的通信

    前言 在 Vue 项目中父子组件的通信是非常常见的,最近做项目的时候发现对这方面的知识还不怎么熟练,在这边做一下笔记,系统学习一下吧. 1 父组件传值给子组件 1.1 传值写法 父组件传值给子组件,这 ...

  8. vue自定义组件(超详细)

    一.局部引入 步骤 1.先将组件写好,放在一个文件中 组件的写法和正常的.vue文件相同,如果需要接收参数,可使用props传值,以封装一个标题组件举例. 以下为项目目录 以下为组件内容 <te ...

  9. mixin机制 vue_vue mixins组件复用的几种方式(小结)

    最近在做项目的时候,研究了mixins,此功能有妙处.用的时候有这样一个场景,页面的风格不同,但是执行的方法,和需要的数据非常的相似.我们是否要写两种组件呢?还是保留一个并且然后另个一并兼容另一个呢? ...

最新文章

  1. 关于Enterprise Library 两个网占.
  2. 对Hibernate赖加载对象在session容器之外的获取方法
  3. ueditor单图上传iframe跨域_UEditor单图上传(simpleupload)跨域问题解决方案
  4. 链表的常见操作(转)
  5. redis和oracle同步方案,redis与oracle之间怎么实现数据同步?
  6. git rev-parse 和 git cat-file
  7. 用 C# 做人脸检测(基于EmguCV)
  8. Cisco思科模拟器不限速下载安装 bp网盘教程
  9. Visio中添加、移动或删除形状上的连接点的方法
  10. Alien Skin Exposure X4 Bundle 4.5.3.66 特别版 Mac 模拟胶片效果调色滤镜
  11. mysql中column的用法_关于MySQL的一些用法
  12. MOOC《Python语言程序设计》第6周练习题
  13. 【数据库】PostgreSQL简介
  14. OpenCV开发笔记(四十九):红胖子8分钟带你深入了解轮廓识别(图文并茂+浅显易懂+程序源码)
  15. 【CRC笔记】CRC-16 IBM-SDLC C语言实现
  16. websphere使用_使用WebSphere sMash为Google小工具提供动力
  17. 语音合成学习(一)综述
  18. CSS - 盒子模型 - 外边距
  19. Android常见系统问题分析工具
  20. 变形金刚2:卷土重来 DVD 高清BT下载

热门文章

  1. a标签超链接时跳转到新窗口
  2. 游戏开发unity资源管理系列:unity不支持长路径;DirectoryNotFoundException: Could not find a part of the path ““
  3. C语言编程找出1000以内的所有完数
  4. 商越科技联合阿里云打造数字化综合解决方案,共创智慧采购新生态
  5. linux系统维护篇:centos6.5之svn服务搭建,按部就班就能成了
  6. lego let‘s encrypt 证书
  7. gstreamer使用总结
  8. Windows 自定义窗口锁定
  9. 分享11:老婆问你各种纪念日
  10. 《惢客创业日记》2019.03.20(周三)旁观者未必清