整理自官网教程 -- https://cn.vuejs.org/

  

  1. 所有Vue组件同时也都是Vue实例,分为全局组件和局部组件,注册方式如下。  

<div id="app">
<my-component></my-component>
<child-component></child-component>
</div>
<div id="example">
<my-component></my-component>
<!--在#app内局部注册的组件在此无法被渲染 -->
<child-component></child-component>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
Vue.component('my-component', { //全局组件,建议使用短横线分隔式命名组件
template: '<div>A custom component!</div>'
})
var Child = {
template: '<div>A child component!</div>'
}
var app = new Vue({
el: '#app',
components: { //局部组件,仅可在父作用域#app中使用
'child-component':Child
}  
})
var example = new Vue({
el:'#example'
})
</script>

  注意:

  a. 如<ul>、<table>和<li>、<tr>等父子元素有限制的元素,不能直接使用组件模板,可由is属性来指定,如<tr is="my-row"></tr>。若使用来自以下来源之一的字符串模板(允许嵌入表达式的字符串字面量),则没有这些限制:

  1) <script type="text/x-template">

  2) JavaScript 内联模板字符串:    

    Vue.component('component1',{
      template: '<tr><td>child component</td></tr>'
    });
    Vue.component('component2',{
      template: '<table><component1></component1></table>'
    });

  3) .vue 组件

  b. 组件实例中 data 必须是一个函数,否则会给每个组件实例返回对同一个对象的引用

  

  2. 父子组件组合使用

  a. 父组件传递数据给子组件

    1) 在子组件中由props声明预期数据。

    2) 属于单向数据流,子组件不能直接修改prop。

    3) 若要设置prop类型验证,则不能用字符串数组,应定义:

      props:{

         propA: Number,

         propB: [String, Number]

      }

    4) 若要添加非prop属性,则在使用子组件时,在标签中设置该属性="true"。

  b. 子组件触发父组件事件

    1) 利用 $on(eventName) 监听事件和 $emit(eventName,optionalPayload) 触发事件。

    2) 结合定义的空实例,也可允许非父子组件的通信。

  c. 父子组件数据组合--利用插槽slot

    1) 子组件中设置<slot>,父组件可分发内容到默认slot或指定slot="slotName"。

    2) 父组件中设置slot-scope="props",可获取子组件slot标签的属性。

    3) 需注意父组件模板的内容在父组件作用域内编译;子组件模板的内容在子组件作用域内编译。

  3. 其他

  a. 通过 v-bind:is = "componentObject",可动态切换组件。若要缓存切出去的组件,则为其添加父元素<keep-alive>。

  b. 在子组件中设置 ref="xx" ,可由 child = vm.$refs.xx 操作子组件。 -- 只是一种紧急手段。

Vue.js学习笔记--4. 组件的基本使用的更多相关文章

  1. Vue.js学习笔记(2)vue-router

    vue中vue-router的使用:

  2. vue.js 学习笔记3——TypeScript

    目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...

  3. Vue.js学习笔记:在元素 和 template 中使用 v-if 指令

    f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...

  4. Vue.js 学习笔记之四:Vue 组件基础

    到目前为止,这个系列的笔记所展示的都是一些极为简单的单页面 Web 应用程序,并且页面上通常只有几个简单的交互元素.但在实际生产环境中,Web 应用程序的用户界面往往是由多个复杂的页面共同组成的.这时 ...

  5. Vue.js 学习笔记之七:使用现有组件

    5.3 使用现有组件 在之前的五个实验中,我们所演示的基本都是如何构建自定义组件的方法,但在具体开发实践中,并非项目中所有的组件都是需要程序员们自己动手来创建的.毕竟在程序设计领域,"不要重 ...

  6. Vue.js 学习笔记之五:编译 vue 组件

    正如上一篇笔记中所说,直接使用 ES6 标准提供的模块规范来编写 Vue 组件在很多情况下可能并不是最佳实践.主要原因有两个,首先是市面上还有许多并没有对 ES6 标准提供完全支持的 Web 浏览器, ...

  7. Vue.js 学习笔记 第7章 组件详解

    本篇目录: 7.1 组件与复用 7.2 使用props传递数据 7.3 组件通讯 7.4 使用slot分发内容 7.5 组件高级用法 7.6 其他 7.7 实战:两个常用组件的开发 组件(Compon ...

  8. Vue.js 学习笔记之六:构建更复杂的组件

    在掌握了如何构建与编译 Vue 组件的基础知识之后,接下来就可以试着来构建一些更具有实际用处的复杂组件了.为了赋予组件更具实用性的后面,首先要做的就是让这些组件具备监听用户自定义事件的能力,并且允许用 ...

  9. Vue.js——学习笔记(一)

    Vue-自学笔记 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅 ...

随机推荐

  1. 3 微信开发本地代理环境的搭建--实现将内网ip映射到外网

    微信公众号的开发,要搭建网站,并且随时都有可能修改网站内容进行调试,这就需要临时外网能返回本地开发环境搭建的项目进行测试,即内网映射到公网,但是好多开发者没有自己的域名和服务器,这里我们先来搭建一个本 ...

  2. git clone新项目后如何拉取其他分支代码到本地

    1.git clone git@git.n.xxx.com:xxx/xxx.git 2.git fetch origin dev 命令来把远程dev分支拉到本地 - - 解读:git fetch命令用 ...

  3. 2015/12/29 eclipse 设置要点 空间 项目 类 eclipse汉化

    开始使用eclipse,双击eclipse.exe文件,启动eclipse.程序会显示一个工作空间的对话框,工作空间用来存放你的项目文件,你可以使用程序默认的,点击确定即可,你也可以重新选择一个文件夹 ...

  4. XML中的CDATA是什么?PCDATA是什么?

    PCDATA表示已解析的字符数据. 在CDATA内部的所有内容都会被解析器忽略.

  5. C项目实践--网络协议和套接字编程

    1.TCP/IP协议 TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议,ICMP(Internet Control Message Proto ...

  6. sql 语法树 常量

    SELECT id,'|',url,'|',update_time FROM tab LIMIT 10;SELECT COUNT(1) AS parent,(SELECT COUNT(1) FROM ...

  7. how to use datatables editor

    Basic initialisation Editor is a Create, Read, Update and Delete (CRUD) extension forDataTables that ...

  8. YTU 2907: 类重载实现矩阵加法

    2907: 类重载实现矩阵加法 时间限制: 1 Sec  内存限制: 128 MB 提交: 345  解决: 164 题目描述 编写矩阵类Matrix,实现两个2x3矩阵相加.主函数已给定. 输入 两 ...

  9. JS窗口

    <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.html', 'newwindow', 'heigh ...

  10. Linux 下的静态(函数)库、动态(函数)库

    0. 基本 在命名上,静态库的名字一般是 libxxx.a,动态库的名字一般是 libxxx.so,有时 libxxx.so.major.minor,xxx 是该 lib 的名字,major 是主版本 ...