Vue组件之间简单的数据传递

1.父组件向子组件传递数据

使用 props 传递

有关 props 详细内容参考我的另一篇Vue中的 props 属性_游小北的博客-CSDN博客

在父组件中定义 data ,在 template 中使用 v-bind 传递

父组件:

<template>
  <div>
    <text1 :name="username" :brith="2002" :age="20"></text1>
  </div>
</template>

data () {
        return {
          username: '张三'
        }
      }

子组件:

props: {
        'name': {
            type: String,
            
            required: true
        },
        'brith': {
            type: Number
        },
        'age': {
            type: Number
        }
    },

2.子组件向父组件传递数据

使用 $emit () 

$emit( ' 自定义事件名 ' ,需要传的值)

子组件的操作:

        第一步:子组件绑定事件 changeName

<button @click="changeName">修改姓名</button>

        第二步:子组件设置 changeName 中 $emit 函数 

 methods: {
        changeName() {
            this.name = '张学友'
            this.$emit('transName',this.name)
        }
    },

先修改姓名为 ‘ 张学友 ’ ,再通过 $emit () 传递数据,‘ transName ’ 是自定义事件名,可自行命名,这是发送函数,那么接收函数?

父组件的操作:

        第一步:父组件设置绑定 子组件中设置的自定义事件 ‘ transName ’,并且设置方法名‘ getName’

 <text1 @transName="getName"> {{name}} </text1>

        第二步:父组件设置接受方法 getName ():把子组件的值传入形参 val ,再赋值给 this.name,再渲染到 {{ name }} 中。

 methods: {
        getName(val) {
          this.name = val
        }
      }

3.兄弟之间数据传输

可使用 Vue bus 进行数据传输( bus 可用于任何组件传值 )

父子组件之间的通信vue提供了更直接的方式,此处不细说,不会的可以去官网研读文档。但是官方没有提供直接的方法用于兄弟组件之间的传值以及相关的逻辑处理。因此就有了vue-bus和vuex.

vue-bus可用于不是特别复杂的项目中任意组件的传值问题。vuex不仅能实现组件之间通信的问题还提供了相应的逻辑处理方法。但是也更为庞大,所以一般简单的传值问题可用于vue-bus解决
————————————————
版权声明:本文为CSDN博主「小白菜地里黄」的原创文章

1. 创建 bus.js 文件

 在 bus.js 文件中写入如下内容:

// 导入 vue 文件内容
import Vue from 'vue'

const Bus = new Vue()
    
export default Bus

2. 在要传值的组件 text1.vue 中导入 bus,并使用 Bus.$emit () 传值

methods: {
       BusTo() {
           Bus.$emit('newName',this.name)
       }
    }

3. 在需要接收的组件 text2.vue 也要导入 bus,并使用 Bus.$on () 接受并执行操作(控制台输出、赋值等)

图示:

 效果如下:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

John Rivers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值