vue-组件传值方式-非父子组件传值解决方案-js版

一、vue-组件传值方式-非父子组件传值解决方案-js版
1. 非父子组件传值-方式一【事件总线】

场景:
在这里插入图片描述
事件总线

  • 步骤一:建立一个公共的js文件,专门用来传递消息。
// bus.js
import Vue from 'vue'
export default new Vue;
  • 步骤二:在需要传递消息的地方
// 在需要传递消息的地方引入
import bus from './bus.js'
// 传递消息
bus.$emit('msg', val)

具体代码举例:
在这里插入图片描述

  • 步骤二:在需要接受消息的地方
// 在需要接受消息的地方引入
import bus from './bus.js'
// 接受消息
bus.$on('msg', (data) => {
    console.log(data);
})

具体代码举例:
在这里插入图片描述

2. 非父子组件传值-方式二【$attrs/listeners】
// 解决多级组件间传值的问题
// $attr 将父组件中不包含props的属性传入子组件,通常配合interitAttrs选项一起使用
// $listeners 监听子组件中数据变化

$attrs

  • 最外层组件统一传值
  • 接受值的组件的父组件引用子组件的地方需要绑定v-bind="$attrs"
  • 接受组件中使用this.$attrs 获取参数。
    举例: 场景
    在这里插入图片描述
    代码实现:
    A组件:
    在这里插入图片描述
    B组件:
    在这里插入图片描述
    C组件:
    在这里插入图片描述
    效果:
    在这里插入图片描述

$listeners

  • 最外层组件监听子组件触发的事件
  • 子组件的父组件使用v-on="$listeners"绑定监听
  • 子组件使用this.$emit(“事件名”),触发事件
    场景:
    在这里插入图片描述
    C组件:
    在这里插入图片描述
    B组件:在这里插入图片描述A组件
    在这里插入图片描述
3. 非父子组件传值-方式三【vuex】

还有一种场景如下:OtherFather组件向Son组件传值,除了使用事件总线的方式,还可以使用vuex
场景:
在这里插入图片描述构造Store:
在这里插入图片描述
OtherFather组件:
在这里插入图片描述
Son组件:

  • 写法一
    在这里插入图片描述
  • 写法二
    在这里插入图片描述
    最后vuex还有很多用法,这边只是最为基础的,希望道友们自行深究。
  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值