整理自官网教程 -- 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. 2016/3/10 PHP (超文本预处理器) 是什么?

    PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛,主要适用于W ...

  2. Codeforces 757 D. Felicity's Big Secret Revealed 状压DP

    D. Felicity's Big Secret Revealed   The gym leaders were fascinated by the evolutions which took pla ...

  3. 利用chrome调试手机网页

    1.pc端安装最新的chrome 2.手机端安装最新的chrome ( Android机 )ms不需要 3.USB连接线 4.打开电脑的chrome 在地址栏输入 chrome://inspect

  4. mongo12---手动预先分片

    手动预先分片:(每个片上的数据是不一样的,是分开存,不是做备份) 自动分片有可能短期内某个片的数据过大,硬盘不够用了.能否100000-30000就到1号片. //以shop.user表为例,先声明s ...

  5. idea自定义文档注释模板

    1.类注释模板 IntelliJ IDE --> Preferences --> Editor --> File and Code Templates --> Includes ...

  6. java泛型-类型擦除

    详细内容:参考java编程思想P373,p650. Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就 ...

  7. JDBC+XML+DOM4J

    利用xml文件封装数据库配置信息xml文件放在src目录下/testjdbc1/src/DBUtil.xml <?xml version="1.0" encoding=&qu ...

  8. USACO45 lights 电灯(折半搜索)

    刚刚上一篇博客才D了队长一发,心里虚的慌......万分感谢队长给讲折半搜索!!听说这题可以高斯消元(可是我不会...貌似折半我也不会) 这题呢,一想到就是爆搜啦,然而,爆搜2^35必跪,折半搜索,就 ...

  9. YTU 2555: 老大的烦恼

    2555: 老大的烦恼 时间限制: 1 Sec  内存限制: 128 MB 提交: 176  解决: 47 题目描述 万恶的小黑,布置了一道题给老大做:给你一个n位的数,现在要求 你随意删除m位后,任 ...

  10. (转)JFreeChart教程

    JFreeChart教程 一.jFreeChart产生图形的流程 创建一个数据源(dataset)来包含将要在图形中显示的数据>>创建一个 JFreeChart 对象来代表要显示的图形&g ...