Vue中的组件传值

本文详细介绍了Vue中组件之间的通信方式,包括基本的父子组件传值,通过props将数据从父组件传递给子组件,以及子组件通过$emit触发事件来通知父组件。此外,还探讨了兄弟组件间通信,利用事件总线或者Vuex实现数据共享。最后提到了无关组件间的通信,通常依赖于Vuex或路由进行状态管理。
摘要由CSDN通过智能技术生成

Vue中组件传值

一、基本的组件传值

1、父子组件:父子组件的代码格式(标签的嵌套)

父组件模板里面有子组件使用<Son></Son>

(1)、父给子传

js

子组件<template><template>

<script>

export default{

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

}

</script>

//父组件

<template>

<Son name="AA" ></Son>

<template>

<script>

export default{}

</script>

(2)、子给父

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

vuex

js

子组件

<template>

<div></div>

<template>

<script>

Export default{

updated(){

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

}

}

</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","我是你兄弟"); //触发事件,就是在调函数

}

}

}

</script>

3、无关组件

使用:vuex,路由。

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

在项目中我用到的是父子间组件传值。父子组件就是在一个Vue文件中引入另一个vue文件,被引入vue文件就是子组件,引入vue文件的vue文件就是父组件。而在父组件中不能直接调用子组件中的变量值。

父组件在引用子组件时,通过属性绑定的形式,把需要传递给子组件的数据,传入到子组件内部,让子组件使用。

把父组件传递过来的数据在props中定义

组件中的所有props中的数据,都是通过父组件传递给子组件的。

利用watch监听父组件type的变化。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值