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. Linux查看某个进程的线程

    线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念.当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间.打开的文件),以使叉分开销最小化 ...

  2. 在linux中文件的权限讲解

    1.d:directory(目录): 表示这个文件是个目录,其他的还有f(file文件)等等: 2.r:read(可读) 3.w:write(可写) 4 x :execute(可执行) 一般Linux ...

  3. C++ MFC棋牌类小游戏day3

    今天开始设计小人棋子. 画法跟画虎一样,唯一不一样的是小人在刚开始会有重叠的情况,所以画起来可能比虎的棋子能够难一点. 我打算用Location结构体中的num来标记每个棋盘坐标存在棋子的个数,isH ...

  4. s3 Docker的镜像和容器

    Docker技术里最为基础的两大概念:镜像和容器.镜像的 获取方式:从registry拉取,从Dockerfile构建:容器的基本操作 1 Docker架构和底层技术简介 Docker Platfor ...

  5. Latex小技巧

    最近由于离散数学课程作业的需要, 使用$\LaTeX$写pdf报告, 积累了一些$\LaTeX$小技巧, 以后还会陆续补充. 1. 查看某个包的使用手册, 在命令行中输入texdoc XXX, 其中X ...

  6. 基于UML的公开招聘教师管理系统建模的研究和设计

    一.基本信息 标题:基于UML的公开招聘教师管理系统建模的研究和设计 时间:2018 出版源:赤峰学院学报(自然科学版) 领域分类:UML:公开招聘教师系统:面向对象方法:建模. 二.研究背景 问题定 ...

  7. python20分钟入门

    原子类型 # 内建函数名不可以做变量名如sum,ord abs(-1) # 1 d = dict() # d = {}空字典的构造 l = list() # l = [] s = set(list) ...

  8. 9.3AspectJ

    1.1 介绍 AspectJ是一个基于Java语言的AOP框架 Spring2.0以后新增了对AspectJ切点表达式支持 @AspectJ 是AspectJ1.5新增功能,通过JDK5注解技术,允许 ...

  9. CentOS 7安装新版RabbitMQ解决Erlang 19.3版本依赖

    通过yum等软件仓库都可以直接安装RabbitMQ,但版本一般都较为保守. RabbitMQ官网提供了新版的rpm包(http://www.rabbitmq.com/download.html),但是 ...

  10. docker中gitlab-runner配置

    1.启动gitlab-runner docker run -d --name gitlab-runner --restart always \ -v /opt/data/gitlab-runner/c ...