Vue 组件传值的十种方法 敲黑板~~~~~敲黑板~~~~ 是十种

2023-11-21 22:59

本文主要是介绍Vue 组件传值的十种方法 敲黑板~~~~~敲黑板~~~~ 是十种,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 父向子传值

  • 父组件里子组件标签上绑定自定义属性,子组件通过props接受
    代码实例

在这里插入图片描述

2.子向父传值

  • 父组件:在子组件标签上定义一个事件
  • 子组件:在子组件通过$emit调用父组件定义的事件,并携带参数。

代码示例:在这里插入图片描述

3.eventBus 事件总线

  • 可以通过EventBus进行信息的发布于订阅。(创建一个能够访问到事件总线)

3.1 在vueprototype原型上挂载是事件总线(main.js文件中)。

Vue.prototype.$eventBus = new Vue()

3.2 发送数据

this.$eventBus.$emit('事件名', 传递参数)

3.3 接受数据

    this.$eventBus.$on('事件名', (接受参数) => {//进行操作})

代码实例:

要求:将Father.vue里面的数据传到Grandson.vue里面

在这里插入图片描述

4. ref

通过添加ref和$refs配合,也可以很方便的获取子组件,访问调用子组件的属性即方法。

用refs指定子组件: <子组件 ref=“ref名”/>
通过$refs访问子组件: this.$refs

代码实例:

<template><div>父组件<Son1 ref="son1"/><Son2 ref="son2"/></div>
</template>
<script>
import Son1 from './Son1.vue'
import Son2 from './Son2.vue'export default {components: {Son1,Son2},mounted () {console.log(this.$refs.son1)}
}
</script>

$refs可以获取到整个子组件。并且可以对齐进行操作
在这里插入图片描述

5. $children 获取子组件集合

  • 父组件中,$children返回的是一个组件集合,如果你清楚子组件的顺序,你也可以使用下标操作。

语法:

this.$children

代码实例:

<template><div>父组件<Son1/><Son2/></div>
</template>
<script>
import Son1 from './Son1.vue'
import Son2 from './Son2.vue'export default {components: {Son1,Son2},mounted () {console.log(this.$children) }
}
</script>

获取结果:

  • 将子组件获取放入一个数据中,可以通过索引获取(this.$children[]
    在这里插入图片描述

6.$parent获取父组件。

  • 子组件中$parent直接指向父组件。

语法:

this.$parent

代码实例:
子组件中

<template><div>子组件</div>
</template>
<script>
export default {mounted () {console.log(this.$parent)}
}
</script>

获取结果:
在这里插入图片描述

总结:ref,$children,$parent

  • 三种办法获取的是类似的
  • 一般是用ref和$parent获取是相对比较准确的比较多获取比较准确
  • 注意使用$children要注意,通过下标获取,一旦组件下标发生改变就会出问题

7.provide与inject 子孙组件传值

  • provide和injiect是成对出现的
  • 作用:用于父组件像子孙组件出传递数据

使用方法:

  • provide在父组件中,返回要传给下级的数据
  • inject在需要使用这个数据的子孙组价中注入数据。(不论组件层级有多深)
  • inject使用方法与props一样,但是他们两个不冲突,也就是说两个可以同时使用。

在这里插入图片描述

8.$attrs 父给孙进行传值

  • $attrs 就像是一个语法糖,原理还是父传给子,子再传给孙
  • $attrs 优化了在子组件中的传递的步骤
  • $attrs 一般搭配 $listeners使用
    在这里插入图片描述
    代码实例:
    在这里插入图片描述

9. $listeners 孙级组件像父级以上传值

  • $listeners 做法极其相似,$listeners是通过触发事件,传的是函数
    在这里插入图片描述
    代码实例:
    在这里插入图片描述

10.Vuex

Vuex是专为Vue.js应用程序开发的状态管理模块,它采用了集中式储存管理应用的所有组件的状态。

Vuex有两个特点:

  1. Vuex的数据是响应式的,当一个组件改变了Vue的中的转态,其他用到此状态的组件都会跟新
  2. 不能直接改变store里面的状态,必须通过store中的commit来提交修改,mutation里面修改

Vuex的五个核心分别是:

  1. states:储存状态。
  2. mutations:修改数据。
  3. getters:计算属性,对数据进行进一步技术并返回
  4. actions:可以包含任意异步操作,actions里面一定会有commit属性调用mutations里 面的方法
  5. models:模块拆分

Vuex这里我就不做详细解释了,之前写过一篇Vuex的帖子>>>>>>>>>>>Vuex

这篇关于Vue 组件传值的十种方法 敲黑板~~~~~敲黑板~~~~ 是十种的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/405683

相关文章

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

Mybatis Plus Join使用方法示例详解

《MybatisPlusJoin使用方法示例详解》:本文主要介绍MybatisPlusJoin使用方法示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录1、pom文件2、yaml配置文件3、分页插件4、示例代码:5、测试代码6、和PageHelper结合6

Java中实现线程的创建和启动的方法

《Java中实现线程的创建和启动的方法》在Java中,实现线程的创建和启动是两个不同但紧密相关的概念,理解为什么要启动线程(调用start()方法)而非直接调用run()方法,是掌握多线程编程的关键,... 目录1. 线程的生命周期2. start() vs run() 的本质区别3. 为什么必须通过 st