vue组件之间的传值

a.png

父子之间传值

父组件

<template>
  <div class="p_div">
    <span>父组件</span>
    <input type="text" :value="sonFinfo">
    <FirstSon :getP="p" @sendP="getSon1" />
  </div>
</template>
<script>
import FirstSon from '@/components/FirstSon.vue'
export default {
  name: 'parent',
  data() {
    return {
      p: '父组件中的值',
      sonFinfo: ''
    }
  },
  components: {
    FirstSon
  },
  methods: {
    getSon1(val) {
      this.sonFinfo = val
    }
  }
}
</script>

子组件1

<template>
  <div class="son_div">
    <span>子组件1</span>
    <input type="text" :value="getP">
    <button @click="send">send</button>
  </div>
</template>
<script>
export default {
  name: 'firstSon',
  data() {
    return {
      son1: '子组件1中的值'
    }
  },
  props: {
    getP: String
  },
  methods: {
    send() {
      this.$emit('sendP', this.son1)
    }
  }
}
</script>
父传子

父组件将数据p发送给子组件

 <FirstSon :getP="p" @sendP="getSon1" />

子组件通过定义props接收父组件传过来的值,定义了getP接收传进来的数据

 props: {
    getP: String
  }

b.png

子传父

$emit将想要发送的值通过函数的形式发出
this.$emit(arg1,arg2) arg1:方法名,arg2:要发送的值
子组件中按钮添加click事件触发send方法

 <button @click="send">send</button>
  methods: {
    send() {
      this.$emit('sendP', this.son1)
    }

父组件中通过定义一个getSon1方法用来接收,该方法的的参数val就是子组件1发送过来的值

 <FirstSon :getP="p" @sendP="getSon1" />
  methods: {
    getSon1(val) {
      this.sonFinfo = val
    }

c.png

兄弟间传值

d.png
创建一个Vue的实例,两子组件共用同一个事件机制
e.png
bus.js

import Vue from 'vue'
export default new Vue

父组件

<template>
  <div class="p_div">
    <FirstSon />
    <SecondSon />
  </div>
</template>
<script>
import FirstSon from '@/components/FirstSon.vue'
import SecondSon from '@/components/SecondSon.vue'
export default {
  name: 'parent',
  components: {
    FirstSon,
    SecondSon
  }
}
</script>

子组件1

<template>
  <div class="son_div">
    <span>子组件1</span>
    <button @click="send">send</button>
  </div>
</template>
<script>
import bus from '@/bus/bus'
export default {
  name: 'firstSon',
  data() {
    return {
      son1: '子组件1中的值'
    }
  },
  methods: {
    send() {
      bus.$emit('toSon2', this.son1)
    }
  }
}
</script>

子组件2

<template>
  <div class="son_div">
    <span>子组件2</span>
    <input type="text" :value="son2">
  </div>
</template>
<script>
import bus from '@/bus/bus'
export default {
  name: 'secondSon',
  data() {
    return {
      son2: ''
    }
  },
  created() {
    let t = this
    bus.$on('toSon2', function(val) {
      t.son2 = val
    })
  }
}
</script>

子组件分别导入bus.js

import bus from '@/bus/bus'

子组件1发送数据
通过一个事件触发bus.$emit(方法名,传递的数据)

  methods: {
    send() {
      bus.$emit('toSon2', this.son1)
    }

子组件2接收数据
bus.$on(方法名,function(接收的数据){})

created() {
    let t = this
    bus.$on('toSon2', function(val) {
      t.son2 = val
    })
  }

f.png

Vue组件之间传值Vue框架中的一个重要功能,它允许不同的组件之间共享数据,实现数据的传递和交互。下面是Vue组件之间传值的最全面解释: 1. 父组件向子组件传值:父组件通过props属性向子组件传递数据,子组件通过props属性接收父组件传递的数据。这种方式适用于父子组件之间的数据传递,父组件可以向多个子组件传递数据。 2. 子组件向父组件传值:子组件通过$emit方法触发事件,父组件通过v-on指令监听事件,并通过事件对象获取子组件传递的数据。这种方式适用于子组件向父组件传递数据,子组件可以触发多个事件,父组件可以监听多个事件。 3. 兄弟组件之间传值:使用一个共同的父组件作为中介,通过props属性和$emit方法实现兄弟组件之间的数据传递。这种方式适用于兄弟组件之间的数据共享,需要注意父组件的数据传递和事件监听。 4. 使用Vuex进行状态管理:Vuex是Vue的状态管理库,可以实现多个组件之间的数据共享和状态管理。通过Vuex的store对象存储数据和状态,并通过mutations、actions和getters等方法实现数据的修改和获取。 5. 使用事件总线:通过Vue的事件机制,创建一个事件总线,多个组件可以通过事件总线进行数据传递。通过Vue实例的$emit方法触发事件,通过Vue实例的$on方法监听事件,并通过事件对象获取数据。 以上是Vue组件之间传值的最全面解释,需要根据具体的场景选择不同的传值方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值