1, 介绍

vue最强大的功能, 可以扩展html元素, 封装可充用的代码

在较高的层面, 组件是自定义元素, vue的编译器为他添加特殊功能, 在有些情况下, 组件也可以表现为用 ls 特性进行扩展了html元素

所有的vue组件同时也都是vue的实例, 所以可接受相同的选项对象(除了一些根级特有的选项) 并提供相同的生命周期的钩子

2, 单文件组件

1), template

2), script

3), style

3部分组成

3, 子父级组件

1), 使用

<template>
<div>
<p > 这儿是 子组件 </p>
</div>
</template> <script>
export default {
name: "b02_son"
}
</script> <style scoped> </style>

父组件中接受

<script>
// 导入子组件
import b02_son from './b02_son' // 必须导出, 外部才可以访问
export default {
name: "b01_component",
components: {
b02_son
}
}
</script>

然后引用

 <div>
<!--导入子组件-->
<b02_son/>
</div>

2, 子父组件通讯

父 -> 子  传递数据

子 -> 父  相应事件

1), 父到子

使用props 进行传递

使用 v-bind进行传递, 可简写为  : 的形式

父类中

<b02_son :title="msg" :lifemsg="lifemsg" :num="num" :obj="obj"/>
data() {
return {
msg: "传递给子的数据",
lifemsg: "hello",
num: 10,
obj: {
name: 'vini',
age: 18
}
}
},

可传递动态数据, 通过v-mode绑定

<!--导入子组件-->
<input type="text" v-model.lazy="lifemsg"> <b02_son :title="msg" :lifemsg="lifemsg" :num="num" :obj="obj"/>
<button @click="changeMsg">button ..</button>

子类中接受

使用props 进行接受

1), 可限定类型, 可同时限制多个类型

2), 可设置默认值

3), 可设置必须

4), 返回为对象形式的话, 必须用function-return的形式

props: {
// 增加必须项
title: {
type: String,
required: true,
}, // 支持多种类型
lifemsg: [String, Number], // 带有默认值
num: {
type: Number,
default: ,
}, // obj 接收
obj: {
type: Object,
default: function () {
return {
name: 'lisa',
age:
}
}
} }

2), 子到父数据传递

需要 @click 并且以函数的形式传递

子中进行绑定和传递, 使用emit传递给父

<template>
<div>
<div>
子给父传递数据
</div> <div>
<button @click="sendMsg">传递数据</button>
</div> </div>
</template> <script>
export default {
name: "b03_emit",
data() {
return {
msg: "子组件数据",
}
},
// 绑定emit
methods: {
sendMsg(event) {
// key, value
this.$emit("sendMsg", this.msg)
}
}
}
</script> <style scoped> </style>

父中进行接受, 也以 函数 的形式进行接受

<!--子给父传递数据-->
<div>
<b03_emit @sendMsg="getMsg"/> </div>
methods: {
getMsg(data) {
this.msg = data;
}
}

2), 父中的数据传递给子, 子计算后返回给父

<!--子给父传递数据-->
<div>
<b03_emit @sendAndCompute="sendAndGet" :num="getNum" />
<p> {{ result }}</p>
</div>

script:

data() {
return {
result: ,
}
},
computed: {
getNum() {
return this.result - ;
}
},
methods: {
sendAndGet(data) {
console.log("..." + data)
this.result = data;
}
}

子中:

 <div>
<!--<button @click="sendMsg">传递数据</button>-->
<button @click="sendAndCompute"> 计算数据 </button>
</div>
// 绑定emit, 返回给父
methods: {
sendAndCompute(event) {
this.$emit("sendAndCompute", this.computeNum)
}
},
// 接受来自父的数据
props: {
num: {
type: Number,
required: true,
}
},
// 计算
computed: {
computeNum() {
return this.num *
}
}

vue-04-组件的更多相关文章

  1. vue.js组件化开发实践

    前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎么实现,技术选型自然 ...

  2. ReactNative新手学习之路04 组件化开发轮播图swiper支持安卓和IOS

    react native 新手之路04 组件化开发轮播图swiper支持安卓和IOS npm install react-native-carousel --save git 地址Properties ...

  3. 如何理解vue.js组件的作用域是独立的

    vue.js组件的作用域是独立,可以从以下三个方面理解: 1.父组件模板在父组件作用域内编译,父组件模板的数据用父组件内data数据:2.子组件模板在子组件作用域内编译,子组件模板的数据用子组件内da ...

  4. Vue 子组件向父组件传参

    直接上代码 <body> <div id="counter-event-example"> <p>{{ total }}</p> & ...

  5. VUE.JS组件化

    VUE.JS组件化 前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎 ...

  6. Vue动态组件

    前面的话 让多个组件使用同一个挂载点,并动态切换,这就是动态组件.本文将详细介绍Vue动态组件 概述 通过使用保留的 <component> 元素,动态地绑定到它的 is 特性,可以实现动 ...

  7. vue中组件的四种方法总结

    希望对大家有用 全局组件的第一种写法 html: <div id = "app"> <show></show></div> js: ...

  8. 如何抽象一个 Vue 公共组件

    之前一直想写一篇关于抽象 Vue 组件的随笔,无奈一直没想到好的例子.恰巧最近为公司项目做了一个数字键盘的组件,于是就以这个为例聊聊如何抽象 Vue 的组件. 先上 Demo 与 源码.(demo最好 ...

  9. vue的组件和生命周期

    Vue里组件的通信 通信:传参.控制.数据共享(A操控B做一个事件) 模式:父子组件间.非父子组件 父组件可以将一条数据传递给子组件,这条数据可以是动态的,父组件的数据更改的时候,子组件接收的也会变化 ...

  10. 为什么VUE注册组件命名时不能用大写的?

    这段时间一直在弄vue,当然也遇到很多问题,这里就来跟大家分享一些注册自定义模板组件的心得 首先"VUE注册组件命名时不能用大写"其实这句话是不对的,但我们很多人开始都觉得是对的, ...

随机推荐

  1. ipv6 docker

    DOCKER, IPV6 BASIC CONFIGURATION OF DOCKER ENGINE WITH IPV6 SEPTEMBER 21, 2015 EYEPV6(AT)GMAIL(DOT)C ...

  2. 探索未知种族之osg类生物---呼吸分解之渲染遍历一

    总结 前面我们基本上已经完成对ViewerBase::frame()函数的探究,只剩下renderingTraversals()渲染遍历的探究,虽然就剩下了一个函数,但是这却是最重要的,不可少的一个步 ...

  3. MPLAB X IDE V4.15 创建工程,编译,问题处理

    初步接触,有错误的地方还请大神们务必提出来,防止误导他人 硬件环境:MCU--PIC18F67K22 仿真下载器--ICD 3 编译环境:MPLAB X IDE V4.15 中文版 工作需要接触到了P ...

  4. Awesome Python 中文版

    Awesome Python ,这又是一个 Awesome XXX 系列的资源整理,由 vinta 发起和维护.内容包括:Web框架.网络爬虫.网络内容提取.模板引擎.数据库.数据可视化.图片处理.文 ...

  5. FileInputStream与FileOutputStreawm实现文件的加密与解密

  6. 部署自己配置的nginx到kubernetes,并且能通过ingress访问

    本文的环境介绍 [root@m-30-1 ~]# kubectl version Client Version: version.Info{Major:"1", Minor:&qu ...

  7. AJAX笔记整理

    AJAX: Asynchronous JavaScript and XML,异步的Javascirpt和Xml. Asynchronous:异步 与之对应的是 synchronous:同步,我们要知道 ...

  8. 【python接口自动化测试教程】00---00章节就代表开篇吧

    今天突然想写个接口测试教程,由于本人是初级的比小白稍微好那么一丢丢,所以不知道能不能坚持下来 写的不对的地方还请大咖指教 先去忙自己的工作了,忙完了回来开始写第一章吧 或者先写个大纲,要不然写的章节会 ...

  9. mac下安装安卓开发环境

    对于做ios的人来说,安装安卓开发环境,最好是在mac下安装了,我的mac是10.8.2,64位系统的 安卓开发环境需要下面几个东西: 1 jdk(mac下已经默认有了,可以在命令提示符下输入java ...

  10. 响应式网站设计(Responsive Web design)

    页面的设计与开发应当根据用户行为以及设备环境(系统平台.屏幕尺寸.屏幕定向等)进行相应的响应和调整.具体的实践方式由多方面组成,包括弹性网格和布局.图片.CSS media query的使用等.无论用 ...