Vue.js学习笔记--4. 组件的基本使用
整理自官网教程 -- 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. 组件的基本使用的更多相关文章
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用:
- vue.js 学习笔记3——TypeScript
目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...
- Vue.js学习笔记:在元素 和 template 中使用 v-if 指令
f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...
- Vue.js 学习笔记之四:Vue 组件基础
到目前为止,这个系列的笔记所展示的都是一些极为简单的单页面 Web 应用程序,并且页面上通常只有几个简单的交互元素.但在实际生产环境中,Web 应用程序的用户界面往往是由多个复杂的页面共同组成的.这时 ...
- Vue.js 学习笔记之七:使用现有组件
5.3 使用现有组件 在之前的五个实验中,我们所演示的基本都是如何构建自定义组件的方法,但在具体开发实践中,并非项目中所有的组件都是需要程序员们自己动手来创建的.毕竟在程序设计领域,"不要重 ...
- Vue.js 学习笔记之五:编译 vue 组件
正如上一篇笔记中所说,直接使用 ES6 标准提供的模块规范来编写 Vue 组件在很多情况下可能并不是最佳实践.主要原因有两个,首先是市面上还有许多并没有对 ES6 标准提供完全支持的 Web 浏览器, ...
- Vue.js 学习笔记 第7章 组件详解
本篇目录: 7.1 组件与复用 7.2 使用props传递数据 7.3 组件通讯 7.4 使用slot分发内容 7.5 组件高级用法 7.6 其他 7.7 实战:两个常用组件的开发 组件(Compon ...
- Vue.js 学习笔记之六:构建更复杂的组件
在掌握了如何构建与编译 Vue 组件的基础知识之后,接下来就可以试着来构建一些更具有实际用处的复杂组件了.为了赋予组件更具实用性的后面,首先要做的就是让这些组件具备监听用户自定义事件的能力,并且允许用 ...
- Vue.js——学习笔记(一)
Vue-自学笔记 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅 ...
随机推荐
- 硬件开发之bt输出---BT656/BT601/BT1120协议以及DM365/DM355/DM6467上使用的YUV颜色空间说明
http://blog.csdn.net/zhouzhuan2008/article/details/17168133
- C++的cout高阶格式化操作
这篇文章主要讲解如何在C++中使用cout进行高级的格式化输出操作,包括数字的各种计数法(精度)输出,左或右对齐,大小写等等.通过本文,您可以完全脱离scanf/printf,仅使用cout来完成一切 ...
- Infrastructure for container projects.
Linux Containers https://linuxcontainers.org/
- java操作CMD命令
import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; public class CM ...
- Ubuntu 16.04安装JDK/JRE并配置环境变量【转】
本文转载自:http://www.linuxdiyf.com/linux/30302.html 作为一个Linux新手,在写这篇文章之前,安装了几次jdk,好多次都是环境变量配置错误,导致无法登录系统 ...
- android 代码优化:关闭输出日志
android关闭日志 我们在开发时,经常会输出各种日志来debug代码.但是等到应用发布的apk运行时不希望它输出日志. 关闭输出日志Log.v(),Log.i(),Log.w(),Log.v(), ...
- Spring 各种注解(@)的含义与认识
依赖注入,从字面上理解,即是:以注入的方式实现依赖: Spring 容器负责创建应用程序中的 bean,并通过 DI(依赖注入)来协调这些对象之间的关系.当描述 bean 如何进行装配(autowir ...
- JVM从理论到实践
这里实践不是指动手写JVM,而是动手做实验,结合日常工作相关的部分,理论与实践结合从而对这块知识有更深入的认识. 随着Java10的到来,JVM这块也有不少调整改进,网上大部分内容都是过时或大部分开发 ...
- Linux 性能工具集
系统级别: 下面这些工具利用内核的计数器在系统软硬件的环境中检查系统级别的活动. vmstat: 虚拟内存和物理内存的统计,系统级别. mpstat: 每个CPU 的 使用情况. iostat: 每个 ...
- 小程序-demo:小熊の日记
ylbtech-小程序-demo:小熊の日记 1.CHANGELOG.md # -- * 更新开发者工具至`v0.10.101100` * 修改`new`页的数据绑定方式 & 修改多行文本框输 ...