VueCli标准化工程中的组件通信操作

1.使用scoped解决样式冲突:

默认情况下:写在组件中的样式会全局生效,因此很容易造成多个组件之间的样式冲突问题;

(1)全局样式:默认情况下无论是否是全局组件,样式都会加载到全局;

(2)局部样式:使用scoped属性,可以让样式只作用于当前组件,包括全局组件;

scoped的原理是:给当前组件的所有元素,都添加上一个自定义属性data-v-hash值;

css选择器后面,被自动处理,添加上了属性选择器;

2.data函数的定义:

与之前传统的HTML形式开发不同,在VueCli中对于data可能会出现父组件引用多次相同子组件的情况,这种情况就会出现无法实现每次子组件的数据独立性,修改其中的一个数据,其他子组件也会被影响,因此我们可以使用data函数的形式,每使用一次子组件就创建一个新对象,以实现数据的独立性;

3.组件间的通信:

3.1父组件与子组件之间的通信:

父子组件通信的流程:

父组件通过props将组件传递给子组件,子组件通过$emit通知父组件修改更新;

父组件传值给子组件时在第二步中 :属性名="值"属性名可以是HTML原生属性,也可以自己取名:

子组件通过$emit()方法提醒父组件修改数据

使用props还可以传递任意数量任意类型的数据,用props进行批量传值:

props校验:用来校验传递过来的数据满不满足要求,如果不满足会报错:

props类型校验

可以校验数据类型,非空校验,默认值设置,以及自定义校验

props和data的区别:

二者都可以用来定义数据,区别在于props是接收的外部的数据不能随便更改,如果需要修改需要通知父组件进行修改,而data是自己的数据可以随意修改;

4.非父子通信--eventBus事件总线:

实现步骤:

(1)创建一个都能访问到的事件总线(空的Vue实例)

复制代码
import Vue from 'vue'
const Bus  =  new Vue()
export default Bus

(2)A(组件),接收方监听Bus实例的事件:

(3)B组件(发送方),触发Bus实例的事件

(4)在App.vue根组件中进行定义

5.组件跨层级共享数据--Provide&Inject

实现步骤:

(1)祖先组件provide提供数据:

(2)后备组件inject取值使用:

这里如果祖先组件修改非响应式数据(非对象),后辈组件是不会接收到的;

6.v-model本质上是一个语法糖,代表了:value和@input的双向绑定

我们将表单封装在组件里面。通过前面我们知道,数据是封装在父组件的,如果表单定义在子组件里面,如何实现表单和数据的双向绑定?这个时候不能直接使用v-model。因为v-model的使用前提是视图和数据都在同一个组件里面才可以。

这里可以使用v-model简化父组件代码:

子组件中:props通过value吸收,事件触发input

父组件中:v-model给组件直接绑定数据(:value="" @input="")

7.sync属性:

可以实现子组件和父组件数据的双向绑定

特点:prop属性名,可以自定义,非固定为value

本质:就是:属性名和@update:属性名合写

8.ref和$refs

作用:使用ref和$refs可以用于获取dom元素,或组件实例;

特点:查找范围在当前组件内;

操作dom元素

我们还可以通过ref和$refs操作组件实例。我们通常在组件内部会封装一些函数。这个时候我们可以在父组件内部去获取这些子组件的实例,然后基于子组件的实例去调用子组件内部封装的函数。

8.使用$nextTick实现VueDOM元素的异步更新:

在更新完DOM数据后,需要一段时间来重新渲染DOM元素,因此在修改完DOM后向进行进一步的更新需要保证异步实现,也就是必须先让DOM更新完并重新渲染完再去操作;

语法如下:

相关推荐
武子康7 分钟前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端
大模型码小白9 分钟前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
随心点儿30 分钟前
js postMessage 实现跨域发送消息-应用示例
javascript·ecmascript·postmessage
一点一木1 小时前
从60首歌到1个网站:输入你的故事,还你一首歌
前端·github
IT_陈寒2 小时前
Vue这个特性差点让我加班到凌晨,谁懂啊
前端·人工智能·后端
kyriewen2 小时前
我让AI改一个bug——它偷偷动了5个我没让它碰的地方
前端·javascript·ai编程
段一凡-华北理工大学2 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
Ljwuhe2 小时前
C++——多态
开发语言·c++
遇乐的果园3 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
心平气和量大福大3 小时前
C#-WPF-Window主窗体
开发语言·c#·wpf