【vue2】组件基础与组件传值(父子组件传值)
创始人
2024-05-12 11:39:14
0

1d43f75f092a4050a8ce31e2d85f6868.gif

🥳博       主:初映CY的前说(前端领域)

🌞个人信条:想要变成得到,中间还有做到!

🤘本文核心:组件基础概念与全局|局部组件的写法、组件之间传值(父传子、子传父)


目录

一、组件基础

1.组件初印象

2.组件组成

3.组件的分类与使用

全局|局部组件案例:

【额外补充】

二、组件传值

1.父传子

2.子传父

父子组件案例:


一、组件基础

1.组件初印象

1.概念:

组件是把页面上可重用的部分封装成组件,方便项目的开发的维护

2.本质:

组件是有HTML结构,css样式,js业务逻辑的HTML自定义标签(下面详解)

上述这个描述可能存在一点点抽象,vue组件这个描述与我们之前学过的div用大盒子装载是一个意思的。我们拿官网的图来给兄弟姐妹们讲解:

上述我们之前一般是用三个大的div(Header、Main、Aside)来封装我们的页面的再细分下去其他模块结构,现在我们用vue组件表示来就是再Root这个根组件中用引入对应的组件标签就可以了

比如上述结构可以用标签这样写:

记住组件的本质:组件是有HTML结构,css样式,js业务逻辑的HTML自定义标签

这样是不是对组件有点感觉了呢!那我们来看看我们的组件是怎么组成的

2.组件组成

一个组件(.vue文件)由三个标签组成:

小提示 : 快速生成组件三大部分的快捷键:

  • 标签,这里写组件的html结构
  • 标签,这里写组件的js代码
  • 标签,这里写组件的css代码

接下来我们来看个实际的例子

(小提示:按下<可快速生成一个.vue后缀的结构)

 下面这张图兄弟姐妹们仔细看,对我们学vue很重要呦

组件 = (页面)盒子 = (html)自定义标签(HTML+CSS+JS) = (代码).vue文件 = (内存)vue实例

3.组件的分类与使用

我们的组件分为两种:①局部组件 ②全局组件

1.局部组件

就是在当前的.vue后缀文件中生效,出了当前.vue后缀的文件就失效。

下面我们来看看我们怎么使用我们的组件:

三大步:①导入 ②注册 ③使用

1.导入局部组件 : 在scrip标签中导入​    		import 组件名 from '组件路径'2.挂载组件 : 在export default里面写一个属性components​    	export default {​      		components: {​        		"标签名": 组件名
​      		}
​    	}3.使用组件 : 像标签一样使用即可,组件可以理解为一个自定义标签<组件名>

全局|局部组件案例:

下面我创建两个.vue文件

1.App.vue


2.MyPens.vue

上述我们写了两个.vue分别为App.vue与MyPens.vue,我们在App.vue中引入我们MyPens.vue中的文件。

2.全局组件

使用方法与局部组件一样,唯一区别就是该组件的注册是在main

1.组件分类:

1.局部组件    2.全局组件

1.局部组件:

注册方法与局部组件注册一致,但是注册不在需要的.vue文件中注册,而是在main.js文件中注册

main.js(核心代码如下)

import MyButton from "@/components/MyButton.vue"//文件路径
Vue.component('MyButton',MyButton)//注册全局

 下面我们引入下我们的组件到别的文件中

 我们引入了到App与MyPens文件中,我们打开App.vue 

 可以看到我们的全局组件引入成功啦,以上就是全局与局部组件的使用方法。


【额外补充】

①浏览器默认打开加载App.vue文件

问题引入:为什么我们浏览器打开的默认是App.vue的文件呢?其实是因为我们在main.js中确定了App.vue是跟根文件入口,我们项目打开默认走的就是App.vue

这是我们的main.js文件现在的情况:

 当我们修改了框起来的配置之后的样子:

 当我们按照这个配置重新运行的时候页面加载的是:(在终端使用命令npm run serve)

可以发现我们成功的将页面的默认加载文件给更改了,改成了MyPens.vue。

②提高子组件css样式的权重

问题引入:当我们的子组件与父(根组件)有重名的的时候,我们是优先加载哪一个的css样式呢?

当我们MyPens.vue与App.vue都有个大div类名为color,并且我们都设置了相同的css样式:

同类名:

同css样式:

 我们在浏览器中查看效果:

发现了我们子与父发生了同名的css样式,我们优先加载的是父(根)组件的。但是我们需要子属性的咋办?使用scoped属性即可

可见当我们在子组件中加载了scoped属性之后,我们子组件的样式就不会被覆盖掉,而是子显示子组件的样式,父显示父组件的样式。


二、组件传值

1.父传子

父传:

父中用v-bind来传数据

如:(v-bind:"属性名" =属性值      该指令可简写为:属性名="属性值")

<子组件> :arr="list"//这两种写法均可,推荐使用这种v-bind:id="item.id" 

子收:

子组件中声明props来接收

props写的有两种:

①不声明数据类型写法(不推荐使用)

props:["属性名","属性名"]

 如:

props:["name","price","id"]

注意点:是用数组包裹属性名

②声明数据类型写法(推荐使用)

   对象名: {

      type: 数据类型, //注意前面需要加:解析不然是字符串类型

      default: xxx, //默认值,可以不用写默认值

    },

 如: 

  props: {price: {type: Number, //注意前面需要加:解析不然是字符串类型default: 100, //默认值}}

2.子传父

子传:

 this.$emit('方法名', 传递的数据)

  如:

this.$emit('price', this.id)

注意点:方法名的书写需要引号

父收:

<子组件>

        @子组件定义的方法名='新方法名'

如:

我们在父组件中导入组件并且讲方法名命名为dochange

    

在methods:{}中重新定义我们的方法dochange(此处是子组件传递过来的数据),这样我们父子传值就完成了。

  methods: {// 接收MyGoods传来的值 3.根据定义事件来写属于我们的方法doChange(id) {//看子文件中传入的事件对象console.log(id)this.list.forEach((element) => {if (element.id === id) {element.price--}})},},

父子组件案例:

子组件MyGoods.vue

父组件MyGoods.vue

好了兄弟姐妹们,先看下实际的效果:


可以看到我们的传值是完全OK的,父组件App.vue里面的数据与我们子文件MyGoods里面的数据是一摸一样的。可得知这两者数据相同并且得到了修改。

下面我们来尝试下,我们父传子之后,我们子不传递给父的情况:

这张图就灵活的显示了当我们在子组件中不传递数据给我们的父组件时,我们只是在我们的页面修改数据,这样就出现了一个小小的BUG,我们页面显示的(子组件数据)与我们App.vue中的数据并不是同步更新的,且当我们点击 来一刀 的时候右上交也会有报错提示。所以可以得出一个结论:当我们需要修改父中的数据我们需要传递过去给父改,我们的props是单项传输之读取的,需要$emit()传过去。

各位兄弟姐妹们,感谢你看到了这里!如果代码注释有不清晰的地方,欢迎大家留言,我会解答喔

下篇文章将讲解【组件进阶与插槽】的用法,本专栏将持续更新~~~~~~

相关内容

热门资讯

升学酒会主持词 升学酒会主持词  借鉴诗词和散文诗是主持词的一种写作手法。在如今这个时代,司仪等是很多场合都需要的角...
秋季开学典礼颁奖主持词 秋季开学典礼颁奖主持词  活动对象的不同,主持词的写作风格也会大不一样。在人们积极参与各种活动的今天...
老人寿宴致辞 老人寿宴致辞(精选7篇)  在我们平凡的日常里,许多人都写过致辞吧,致辞具有“礼仪性”或“仪式化”的...
经典高考升学宴主持词   尊敬的各位领导、各位嘉宾、各位亲朋好友:  大家好!8月,理想赤诚、热爱挚烈,8月,阳光灿烂、收...
中秋晚会主持稿 中秋晚会主持稿(精选5篇)  又到了一个激动人心的好日子!中秋合家团圆,是中华民族的传统习俗。下面是...
男孩满月酒主持词 男孩满月酒主持词  主持词要注意活动对象,针对活动对象写相应的主持词。在各种集会、活动不断增多的社会...
婚礼司仪主持词简短版 婚礼司仪主持词简短版  借鉴诗词和散文诗是主持词的一种写作手法。在人们积极参与各种活动的今天,各种集...
培训主持词 【精华】培训主持词八篇  借鉴诗词和散文诗是主持词的一种写作手法。在当今不断发展的世界,很多晚会、集...
婚礼主持词完整版 2017婚礼主持词(完整版)  无论新人举行什么样形式的婚礼,婚礼主持人是必不能少的。那么婚礼司仪全...
《哈利波特》的经典语录台词 《哈利波特》的经典语录台词  “就看你的了,哈利,要使他们看到,作为一名找球手,单靠一个有钱的爸爸是...
前任2备胎反击战经典台词 前任2备胎反击战经典台词  1、一见钟情太肤浅,日久生情才是真。  2、再深的感情也敌不过缘分的交错...
生日宴会主持词开场白 生日宴会主持词开场白(精选19篇)  【导语】一个好的活动开展,主持人的开场一定要和活动的主题相契合...
大学军训汇报表演主持词 大学军训汇报表演主持词  军训汇演是必不可少的,下面unjs小编整理了大学军训汇报表演主持词,欢迎阅...
闭幕词 闭幕词(通用10篇)  闭幕词,是会议的主要领导人代表会议举办单位,在会议闭幕时的讲话。其内容一般是...
班歌串词 班歌串词尊敬的领导、亲爱的同学们:大家上午好!(合)请全体起来,齐唱《美佛儿校歌》请坐!今天我们隆重...
幼儿园元旦活动主持词开场白   一、主持人开场白:  (亲爱的爸爸妈妈,小朋友们,大家新年好!因为您的孩子,我们走到了一起,形成...
生日主持主持词 精选生日主持主持词4篇  主持词要尽量增加文化内涵、寓教于乐,不断提高观众的文化知识和素养。在如今这...
开业庆典主持词 开业庆典主持词  什么是主持词?  主持词是主持人对各种晚会背诵已经准备好的稿子,或眼看提示器说出,...
新职工欢迎会主持词 新职工欢迎会主持词  主持词已成为各种演出活动和集会中不可或缺的一部分。在当下的中国社会,主持人的需...
颁奖晚会主持词 颁奖晚会主持词集合7篇  主持词可以采用和历史文化有关的表述方法去写作以提升活动的文化内涵。随着社会...