Vue组件使用基础
这篇博文用来记录
.vue
组件的使用方法。
可以把组件代码按照 template
、style
、script
的拆分方式,放置到对应的 .vue
文件中。
模板(
template
)、初始数据(data
)、接受的外部参数(props
)、方法(methods
)、生命周期钩子函数(lifecycle hooks
)。
基本步骤
在 html
中使用组件
<div id="app">
<my-component></my-component>
</div>
使用组件首先需要创建构造器:
var myComponent = Vue.extend({
template: `<p>myComponent</p>`
})
要把这个构造器用作组件,需要用 Vue.component(tag, constructor)
注册 :
全局注册
// 全局注册组件,tag 为 my-component
Vue.component('my-component', myComponent)
Vue.component('my-component', MyComponent)
这种是全局注册,第一个参数是注册组件的名称,第二个参数是组件的构造函数;
选项对象的template
属性用于定义组件要渲染的HTML
;
局部注册
new Vue({
el: '#app',
components: {
'my-component': myComponent
}
})
子组件只能在父组件的template
中使用。
组件选项问题
在定义组件的选项时,data
和 el
选项必须使用函数。
如果data
选项指向某个对象,这意味着所有的组件实例共用一个data
。
所以应当使用一个函数作为 data
选项,让这个函数返回一个新对象:
Vue.component('my-component', {
data: function () {
return {a: 1}
}
});
同理,el
选项用在 Vue.extend()
中时也须是一个函数。
数据传递
Vue.js组件之间有三种数据传递方式:
- props
- 组件通信
- slot
props
props是组件数据的一个字段,期望从父组件传下来数据。因为组件实例的作用域是孤立的,所以子组件需要显式地用props
选项来获取父组件的数据。
props
选项可以是字面量、表达式、绑定修饰符。
字面量
<div id="app">
<child msg="hello!"></child>
</div>
<script src="https://cdn.bootcss.com/vue/2.4.4/vue.js"></script>
<script>
Vue.component('child', {
props: ['msg'],
// prop 可以用在模板内
// 可以用 this.msg 设置
template: `<span>{{msg}} Are you tired?</span>`
});
new Vue({
el: "#app"
})
</script>
HTML
特性不区分大小写。名字形式为 camelCase
的 prop
用作特性时,需要转为 kebab-case
(短横线隔开):
<div id="app">
<child my-message="hello!"></child>
</div>
<script src="https://cdn.bootcss.com/vue/2.4.4/vue.js"></script>
<script>
Vue.component('child', {
props: ['myMessage'],
template: `<span>{{myMessage}} Are you tired?</span>`
});
new Vue({
el: "#app"
})
</script>
动态
用 v-bind
绑定动态 props
到父组件的数据。每当父组件的数据变化时,也会传导给子组件。
<div id="app">
<input v-model="parentMsg"><br>
<child :my-message="parentMsg"></child>
</div>
<script src="https://cdn.bootcss.com/vue/2.4.4/vue.js"></script>
<script>
Vue.component('child', {
props: ['myMessage'],
template: `<span>{{myMessage}} Are you tired?</span>`
});
new Vue({
el: "#app",
data: {
parentMsg: 'hello!'
}
})
</script>
绑定类型
可以使用绑定修饰符:
.sync
,双向绑定.once
,单次绑定
<!-- 默认为单向绑定 -->
<child :msg="parentMsg"></child>
<!-- 双向绑定 -->
<child :msg.sync="parentMsg"></child>
<!-- 单次绑定 -->
<child :msg.once="parentMsg"></child>
prop
默认是单向绑定:当父组件的属性变化时,将传导给子组件,但是反过来不会。
不过需要注意的是:如果 prop
是一个对象或数组,是按引用传递。在子组件内修改它会影响父组件的状态,不管是使用哪种绑定类型。
prop类型验证
Vue.component('example', {
props: {
propA: Number,// 基础类型检测 (`null` 任何类型)
propM: [String, Number],// 多种类型 (1.0.21+)
propB: {// 必需且是字符串
type: String,
required: true
},
propC: {// 数字,有默认值
type: Number,
default: 100
},
propD: {// 对象|数组的默认值应当由一个函数返回
type: Object,
default: function () {
return {msg: 'hello'}
}
},
propE: {
// 指定这个 prop 为双向绑定
// 如果绑定类型不对将抛出一条警告
twoWay: true
},
propF: {// 自定义验证函数
validator: function (value) {
return value > 10
}
},
propG: {
// 转换函数(1.0.12 新增)
// 在设置值之前转换值
coerce: function (val) {
return val + '';// 将值转换为字符串
}
},
propH: {
coerce: function (val) {
return JSON.parse(val);// 将 JSON 字符串转换为对象
}
}
}
});
原文地址:https://segmentfault.com/a/1190000012878571
Vue组件使用基础的更多相关文章
- Vue组件的基础用法(火柴)
前面的话 组件(component)是Vue最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码,根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己的需要,使用 ...
- Vue 组件的基础介绍
1.组件定义 1.定义组件并引用 2.父组件向子组件传值 3.子组件向父组件传值 # 组件间传值:vuex (https://www.cnblogs.com/xiaonq/p/9697921.html ...
- Vue组件基础用法
前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...
- Vue.js-08:第八章 - 组件的基础知识
一.前言 在之前的学习中,我们对于 Vue 的一些基础语法进行了简单的了解,通过之前的代码可以清晰的看出,我们在使用 Vue 的整个过程,最终都是在对 Vue 实例进行的一系列操作. 这里就会引出一个 ...
- Vue组件基础
<!DOCTYPE html><html> <head> <meta charset="utf-8"> ...
- Vue.js教程--基础(实例 模版语法template computed, watch v-if, v-show v-for, 一个组件的v-for.)
官网:https://cn.vuejs.org/v2/guide/index.html Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统. 视频教程:https: ...
- vue.js原生组件化开发(一)——组件开发基础
前言 vue作为一个轻量级前端框架,其核心就是组件化开发.我们一般常用的是用脚手架vue-cli来进行开发和管理,一个个组件即为一个个vue页面,这种叫单文件组件.我们在引用组件之时只需将组件页面引入 ...
- 2.基础:Vue组件的核心概念
一.组件基础和注册 组件概念 组件系统是 Vue 的另一个重要概念,他的核心就是封装和复用. 细节 组件的name必须是全局唯一. 二.属性.事件和插槽 组件的三大核心概念:属性.事件和插槽. 属性, ...
- vue组件基础之父子传值
可以看出数据从后端获取过来,最外层的父组件接收数据,子组件不能直接获取,必须由父组件传递,此时使用props,并且父组件的值更新后,子组件的值也会随之更新,但是反过来通过修改子组件props来影响父组 ...
随机推荐
- [转] hadoop MapReduce实例解析-非常不错,讲解清晰
来源:http://blog.csdn.net/liuxiaochen123/article/details/8786715?utm_source=tuicool 2013-04-11 10:15 4 ...
- PHP实现的毫秒定时器,同时解决进程不重复堆积
定时器任务,在WEB应用比较常见,如何使用PHP实现定时器任务,大致有两种方案:1)使用Crontab命令,写一个shell脚本,在脚本中调用PHP文件,然后定期执行该脚本:2)配合使用ignore_ ...
- php 与 nginx 的两种处理方式
1.IP:Port 监听方式 php-fpm docker pull PHP:2.4-alpine nginx.conf fastcgi_pass 127.0.0.1:9000; php-fpm 在容 ...
- django-9-请求与响应
写在表单下面{% csrf_token %} <<<文件上传>>>settings.py UPLOAD_ROOT = os.paht.join(BASE_DIR, ...
- poj 2288 Islands and Bridges (状压dp+Tsp问题)
这道题千辛万苦啊! 这道题要涉及到当前点和前面两个点,那就设dp[state][i][j]为当前状态为state,当前点为i,前一个点为j 这个状态表示和之前做炮兵那题很像,就是涉及到三个点时,就多设 ...
- 常见的版本号及Springcloud的版本
谈谈软件版本号的认识 一.常见版本号说明 举个瓜:2.0.3 RELEASE 2:主版本号,当功能模块有较大更新或者整体架构发生变化时,主版本号会更新 0:次版本号.次版本表示只是局部的一些变动. 2 ...
- POI 详细介绍
Apache POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.目前POI已经有了Ruby版本. 结构: HSSF - 提供读写Microsoft Excel XLS格式 ...
- LaTeX 图片色偏解决方法
本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50327113 在LaTeX的编辑模式中 ...
- skimage的安装,scikit-image
在mac上面的安装: pip install -U scikit-image
- HDU 4301 Contest 1
开始时设的是第一.二行前i,j列有k种的方法数,但是,这根本转移不了--! 难点在于1,2行的讨论啊... 设f[i][j][0]为前i列分成j个部分,且第i列的两个为同一部分的方法数. f[i][j ...