欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

vue父子传值,兄弟传值,子父传值详解

程序员文章站 2022-03-16 21:08:23
目录一、父组件向子组件传值1.父组件.vue2.子组件.vue二、兄弟组件间传值还可以通过中间件bus1.a组件.js2.b组件.js三、子组件向父组件传值1.父组件.js2.子组件.js总结:一、父...

一、父组件向子组件传值

1.父组件.vue

// 父组件中
<template>
    <div>
        <child ref="child" :title="value"/>
    </div>
</template>    
<script>
export default {
    data() {
    	return {
    		value: 'hello world!'
    	}
    }
}
</script>

2.子组件.vue

// 父组件中
<template>
    <div>
       <span>{{title}}</span>    
    </div>
</template>    
<script>
export default {
  props: {
    title: {
      	type: string,
      	default: ''
    }
  }
}
</script>

//title值为'hello world!

二、兄弟组件间传值还可以通过中间件bus

$emit 传值

$on 接收

$off 删除传输事件

1.a组件.js

this.$bus.$emit("flag",true)

2.b组件.js

mounted() {
    this.$bus.$off('flag')
    this.$bus.$on('flag', data=> {
      this.flag= data
    })
  }

三、子组件向父组件传值

1.父组件.js

<template>
    <div>
        <child ref="child" @gettitle="gettitle"/>
    </div>
</template>  
<script>
import child from './components/child'
export default {
  components: {
  	child 
  },
  data() {
    return {
    }
  },
  method:{
  	gettitle(data){
		console.log(data)
	}
  }
}
</script>

打印结果为 hello xuliting

2.子组件.js

<template>
    <div>
       <span>{{title}}</span> 
    </div>
</template>    
<script>
export default {
  data() {
    return {
    title: 'hello xuliting'
    }
  },
  mounted(){
    this.getfun()
  },
  method:{
    getfun(){
     this.$emit("gettiltle",this.title)
    }
  }
}
</script>

总结:

组件间也可以通过传递方法从而解决。例如父组件为a,子组件有b和c。

父组件a调用子组件b的方法定义为afun,把afun传递给子组件c即可

这是在父组件中的组件c进行方法传递

<c :a-fun="afun" />

引用的则是在组件c,通过props

props: {
    afun: {
      type: function,
      default: () => function() {}
    }
  }

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!