vue组件之间传参方式

本文详细介绍了Vue组件间通信的多种方法,包括props/$emit实现父子通信,ref/$refs直接访问,eventBus事件总线处理非父子组件通信,vuex进行全局状态管理,依赖注入provide/inject,$parent/$children访问组件实例,以及$attrs/$listeners实现跨代通信。通过这些方式,开发者可以根据项目需求灵活处理组件间的数据传递。
摘要由CSDN通过智能技术生成

组件是vue的强大功能之一,组件实例的作用域是相互独立的,意味着不同组件之间的数据无法相互进行直接的引用,所以组件间的通信是非常重要的。

一、props / $emit
      1、父组件向子组件传值(props的用法)
      2、子组件向父组件传递数据($emit的用法)
二、ref / $refs
三、eventBus事件总线($emit / $on)
      1、创建事件中心管理组件之间的通信
      2、发送事件 假设有两个兄弟组件firstCom和secondCom
      3、接收事件
四、vuex数据共享
五、依赖注入(provide / inject)
六、$parent / $children
七、$attrs / $listeners
八、总结

一、props / $emit

父组件通过 props 向子组件传递数据,子组件通过 $emit和父组件通信

1、父组件向子组件传值(props的用法)

props的特点:

  • props只能是父组件向子组件进行传值,props使得父子组件之间形成一个单向的下行绑定。子组件的数据会随着父组件的更新而响应式更新。
  • props可以显示定义一个或一个以上的数据,对于接收的数据,可以是各种数据类型,同样也可以是传递一个函数。
  • props属性名规则:若在props中使用驼峰形式,模板中标签需要使用短横线的形式来书写。

用法:
父组件:

// 父组件
<template>
    <div id="father">
        <son :msg="msgData" :fn="myFunction"></son>
    </div>
</template>

<script>
import son from "./son.vue";
export default {
   
    name: father,
    data() {
   
        msgData: "父组件数据";
    },
    methods: {
   
        myFunction() {
   
            console.log("vue");
        }
    },
    components: {
   
        son
    }
};
</script>

子组件:

// 子组件
<template>
    <div id="son">
        <p>{
   {
   msg}}</p>
        <button @click="fn">按钮</button>
    </div>
</template>
<script>
export default {
   
    name: "son",
    props: ["msg", "fn"]
};
</script>
2、子组件向父组件传递数据($emit的用法)

$emit的特点:

  • $emit 绑定一个自定义事件,当这个事件被执行的时候就会将参数传递给父组件,而父组件通过v-on监听并接收参数。

用法:
父组件:

// 父组件
<template>
  <div class="section">
    <com-article :articles="articleList" @onEmitIndex="onEmitIndex"></com-article>
    <p>{
   {
   currentIndex}}</p>
  </div>
</template>

<script>
import comArticle from './test/article.vue'
export default {
   
  name: 'comArticle',
  components: {
    comArticle },
  data() {
   
    return {
   
      currentIndex: -1,
      articleList: ['红楼梦', '西游记', '三国演义']
    }
  },
  metho
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值