Vue非父子组件传值

article/2025/11/9 2:46:38

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、非父子组件传值
  • 二、事件总线
    • 2.$attrs / listeners
    • VueX是笔者认为最稳定的非父子传值的方法,笔者也会单独写出文章详解
  • 总结


前言

本节紧接这上一篇,说说如何在非父子组件中进行组件之间的传值


一、非父子组件传值

(1)事件总线
(2)$attrs / listeners

二、事件总线

事件总线的原理就是:

创建一个公共的Js文件,让其专门负责传值。就像公共的交通工具bus,data可以乘坐这辆bus到达指定的站台(相应的组件)

那么首先要做的就是在我们的项目中创造这辆bus

1.闭门造车(创建公用JS文件)

首先得在城市中(src目录下)租块地(创建一个文件夹),放置这辆bus。
bus.js的创建十分简单,只要粘贴以下代码:

import Vue from 'vue';
export default new Vue;

当然造车的方法有很多种,笔者只想给你最便捷的一种。

2.上车

既然坐车就要刷卡,刷卡的方式也很简单,在需要传递数据的组件中引入bus.js

import bus from './bus.js'

之后bus出发,在该组件中发射事件,发射事件需要一个媒介,在本篇就用button的click事件触发:

<button @click="appmsg">bus传递data</button>

在methods中定义事件:

 methods:{appmsg(){bus.$emit('getonbus','App')}}

上车出发过程完成

3.下车

下车也要刷卡,方式相同,在需要接收数据的组件中引入bus.js

import bus from './bus.js'

在示例中提前定义了一个变量value

data(){return{value:"Home"}}

到站接收数据,在接收组件的mounted中接收,代码如下:

mounted(){bus.$on('getonbus', val => {this.value = val})}

至此我们已经完成了数据的传输,我们来看看效果:
html代码:

<p>{{value}}</p>

效果:
点击前:
在这里插入图片描述

点击后:
在这里插入图片描述
这确实是一个十分方便的方法,但是:
事件总线方式传递数据同时需要及时的移除事件监听,这对于初学者是个麻烦事,因此
换种方法往下看吧,哈哈

2.$attrs / listeners

这种传值方式主要是用于多级组件的传值,其实还是得保持一种“血脉联系”
例如爷爷组件给孙子组件传值,当然这借助简单的v-bind也是可以实现的,但是如果我们就是想跳过父组件就可以用这种方式;

在示例中的组件关系如下:Home(爷爷)>parent(父亲)>child(孩子)
在Home中定义数据,并传入parent:

<template><div class="home"><p>{{value}}</p><parent :msga="a" :msgb="b" :msgc ="c"></parent></div>
</template><script>
import parent from './parent.vue'
export default {name: 'home',components: {parent},data(){return{value:"Home",a:"aaa",b:"bbb",c:"ccc"}}
}
</script>

在父组件中需要定义一个v-bind

<template><div><child v-bind="$attrs"></child></div>
</template>

在孙子组件中打印$attrs

mounted(){console.log(this.$attrs)}

我们来看打印台结果:
在这里插入图片描述
孙子得到了爷爷全部的数据,真正的隔代亲!
$listeners大家自己可以试试,爷爷会直接得到孙子发射的事件。
这种方法可以看成props / $emit的延续版,对比学习,效果更佳

VueX是笔者认为最稳定的非父子传值的方法,笔者也会单独写出文章详解

总结

本篇主要讲解了非父子传值的两种方法,深入浅出,让大家对vue传值有更好的理解。


http://chatgpt.dhexx.cn/article/Ail4UaBt.shtml

相关文章

vue2父子组件传值

1.父传子 父传子&#xff1a;主要是在父组件引入子组件&#xff0c;将要传值的值绑定指定的属性上如 然后在子组件用props接收即可在页面展示 1.父组件 <template><div class"home"><HelloWorld :msg title></HelloWorld></div> &l…

VUE父子组件传值(含实例)

vue父子组件通信 这里的movies数组和message字符串&#xff0c;相当于是在父组件中对要传给子组件的数据做赋值或者计算等操作。 1.父传给子&#xff08;在子组件中改数据&#xff09; 父组件&#xff1a; 1.在子组件上绑定数据arrData 2.在data()中给出定义&#xff08;注意…

vue3.0 父子组件传值问题

使用vue3.0时遇到父子传值的问题&#xff0c;顺便记录一下 问题背景&#xff1a; 如图所示&#xff0c;编辑按钮是父组件的部分&#xff0c;下面的表单是子组件 需要&#xff1a;按下父组件中的编辑按钮时&#xff0c;子组件的表单需要变成可编辑状态&#xff0c;在可编辑状…

微信小程序:父子组件传值

在微信小程序里&#xff0c;父组件可以向子组件传值&#xff0c;子组件也可以向父组件传值&#xff0c;不过这两种传值方式不大相同&#xff0c;下面先简单介绍这两种传值的区别。 两者的区别 父组件向子组件传值&#xff0c;使用的是 属性绑定 的方法&#xff0c;并且只能传…

vue 实现父子组件传值和子父组件传值

先上一张图&#xff0c;vue 父子组件传值都用的图片。从张图入手了解如何传参。 一、父组件 1.引入子组件 import random from "./child-random-paper"; 2.注册子组件 components: {random,}, 3. 静态组件&#xff0c;循环体 <liv-for"(item, index) i…

Vue.js父子组件如何传值 通俗易懂

父子组件传值原理图 一般页面的视图App.vue应为这样 一.父组件向子组件传值 1.创建子组件&#xff0c;在src/components/文件夹下新建一个Child.vue 2.Child.vue的中创建props&#xff0c;然后创建一个名为message的属性 3.在App.vue中注册Child组件&#xff0c;并在template中…

Vue3 父子组件传值 ts

父子组件传值 父子组件传值&#xff0c;父组件通过子组件的v-bind定义一个属性将父子的数据传递给子组件&#xff0c;子组件通过defineProps传递纯类型参数的方式来声明,接收父组件传过来的数据。子组件通defineEmits派发一个事件来传递给父组件 父组件 <template> <d…

vue父子组件传值的方法总结

一&#xff0c;父向子传值 1.通过props 使用技巧&#xff1a; 子组件内, props定义变量, 在子组件使用变量 父组件内, 使用子组件, 属性方式给props变量传值 注意事项&#xff1a; 父组件的数据发生了改变&#xff0c;子组件会自动跟着变 子组件不能直接修改父组件传递过来…

Vue2-父子组件传值

在日常开发中&#xff0c;我们经常会在一个组件中嵌套另外一个组件&#xff0c;那么如果我们父组件要向子组件传值该怎么办&#xff1f;子组件向父组件通信又该怎么办&#xff1f;本文将详细举例说明这些问题。 父向子通信 问题描述 现在我们有个需求&#xff0c;我们要分别…

Vue父子组件传值的方法

1.父向子传值props 父组件&#xff1a;<child :inputName"name"> 子组件&#xff1a; &#xff08;1&#xff09;props: { inputName: String, required: true } &#xff08;2&#xff09;props: ["inputName"] 2.子组件向父组件传值$emit 子组…

Vue中父子组件传值的多种方式

vue中父子组件传值 vue中的父子组件传值&#xff0c;值得注意的是要遵守单向数据流原则。所谓单向数据流原则&#xff0c;简单的说就是父组件的数据可以传递给子组件&#xff0c;子组件也可以正常获取并使用由父组件传过来的数据&#xff1b;但是&#xff0c;子组件中不能直接修…

vue父子组件传值

记录一下项目中遇到的问题。 因为一个流程对应一种单据&#xff0c;所以每次点击单据详情&#xff0c;应该出现相应的单据内容。在另一个页面&#xff0c;也需要调用这个单据内容。 因为vue不能直接调用弹出框&#xff0c;所以老师把单据内容写成了组件&#xff0c;在另一个页…

Vue中父子组件如何传值

关键词&#xff1a;props、$emit()、绑定的数据和事件 文章目录 前言一、将子组件引入父组件二、父组件如何传值给子组件三、子组件如何接收父组件传过来的值并使用(props)四、子组件如何传值给父组件($emit)五、父组件使用子组件传过来的值总结 前言 提示&#xff1a;这里可以…

父子组件之间的传值

&#xff08;1&#xff09;子组件给父组件传值 子组件 &#xff08;1.1&#xff09;子组件Child.vue&#xff0c;在button按钮上通过点击passToparent事件&#xff0c;在子传父的this.$emit方法上自定义事件名&#xff0c;以及需要传递的值&#xff08;可以是数组、对象、字符…

父子组件传值

1.父组件——子组件 想象一下&#xff0c;父子组件传值&#xff0c;就类似于父亲给儿子东西&#xff0c;父亲给儿子的东西要有名字吧&#xff0c;名字就是属性&#xff0c;父亲给儿子东西&#xff0c;儿子要用手接过来&#xff0c;那手就相当于子组件里的props。 用个例子来更…

组件之间父子组件传值

组件之间父子组件传值 在components新建父组件和子组件 在父组件里引入子组件 子组件接收父组件中的数据,用props 在子类props里定义接收的参数 在子组件标签上引用 然后在父组件写上准备传递的参数 子组件拿到父组件的背景颜色,就会去覆盖默认的背景颜色

Stanford UFLDL教程 独立成分分析

独立成分分析 Contents [hide] 1概述2标准正交ICA3拓扑ICA4中英文对照5中文译者 概述 试着回想一下&#xff0c;在介绍 稀疏编码算法中我们想为样本数据学习得到一个超完备基&#xff08;over-complete basis&#xff09;。具体来说&#xff0c;这意味着用稀疏编码学习得到…

降维算法原理篇:主成分分析PCA、奇异值分解SVD、因子分析法FA、独立成分分析ICA等原理详推

前言&#xff1a;若需获取本文全部的手书版原稿资料&#xff0c;扫码关注公众号&#xff0c;回复: 降维算法综述 即可获取。 原创不易&#xff0c;转载请告知并注明出处&#xff01;扫码关注公众号【机器学习与自然语言处理】&#xff0c;定期发布知识图谱&#xff0c;自然语言…

独立成分分析算法(ICA)

ICA算法 考虑这样的一个问题,叫做”鸡尾酒派对问题”。这里&#xff0c;在派对上&#xff0c;有n个说话的人单独地说话&#xff0c;并且所有在房间里的麦克分只能收到n个说话人的重叠的声音。但是我们说有n个不同的麦克分位于房间里&#xff0c;因为每个麦克分距离每个说话者的…

独立成分分析(ICA)降噪应用时存在哪些问题?

关注“心仪脑”查看更多脑科学知识的分 关键词&#xff1a;降噪、ICA 对经常处理脑电信号的朋友来说&#xff0c;降噪是必不可少的环节。眼动、眨眼、肌肉运动、脉搏等噪声会严重污染脑电&#xff0c;严重影响脑电的后续分析。2001年提出的FastICA算法使ICA可以真正稳定地分析…