Vue组件传值

本文详细介绍了Vue中组件间通信的三种常见方式:props实现父子组件通信,$emit触发事件进行子父通信,以及使用事件总线解决兄弟组件通信问题。此外,还探讨了在无关组件间的通信,推荐使用Vuex或路由来管理状态。对于复杂应用,Vuex是集中管理组件状态的有效工具。
摘要由CSDN通过智能技术生成

组件传值

 一、基本的组件传值

1、父子组件(是两个组件同时都在页面上展示着(都在内存中))

```js

//父子组件的代码格式(标签的嵌套)

父组件模板里面有子组件使用

     <Son></Son>

```

1)、父给子

​      props,vuex

```js

子组件

<template>

     ....

<template>

<script>

    export default{

        props:['name'],//子组件的属性

   }

</script>

//父组件


 

<template>

     <Son name="sss" ></Son>

<template>

<script>

    export default{


 

}

</script>

```



 

2)、子给父

触发事件: this.$emit(); 

vuex

```js

子组件

<template>

     <div ></div>

<template>

<script>

    export default{

    

    updated(){

        this.$emit("myClick","hello,我是儿子");//触发子组件的自定义事件,调用父组件的函数,传参

     }    

  }

</script>

//父组件

<template>

     <input type="button" v-on:click="fn" />

     <Son v-on:myClick="fn" ></Son>

<template>

<script>

    export default{

        

        methods:{

            fn(str){

                

            }

        }

    }

</script>

```



 

### 2、兄弟组件(是两个组件同时都在页面上展示着(都在内存中))

```js

//父组件的模板里:

<Son1></Son1>

<Son2></Son2>

```

使用:事件总线,vuex,共同的父亲



 

**事件总线**

思路:

​       使用一个空的vue对象,借助vue对象的$on和$emit。空的vue对象就相当于一个全局对象

代码格式:

```js

//1、创建一个空的vue对象

./utils/vuebus.js

export default new Vue();

//假定Son1给Son2传

//2、在Son2里绑定事件(给事件名绑定一个函数)

<template>

     

<template>

<script>

    import vuebus from "./utils/vuebus"

    export default{

         created(){

             vuebus.$on("myClick",(str)=>{

                 console.log(str);

             });

         }

    }

</script>

//3、在Son1触发Son2里绑定的事件(触发事件,并调用函数)

<template>

     <input type="button" value="传" @click="fn" />

<template>

<script>

    import vuebus from "./utils/vuebus"

    export default{

         methods:{

             fn(){

                 vuebus.$emit("myClick","hi,我是你兄弟"); //触发事件,就是在调函数

             }

         }

    }

</script>

```



 

### 3、无关组件(有可能不是同时都在内存中)

vuex,路由

当两个组件不是同时都在内存中存在的话,那么就需要借助于另外 一个对象(如:vuex,vue-router)





 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值