vue父子组件之间传值,以及之间方法调用

该文章主要记录在工作中经常使用的小知识点、注意点、遇到的小问题

vue父子组件传值,调用方法

父传子值,父调用子方法

父组件向子组件传值(引入子组件→在引入的子组件绑定需要传送的值→子组件props接收)

<!-父组件--->
<template>
  <div>
    <child :msg="msg"></child>
  </div>
</template>

<script>
import child from './child'
export default {
  components:{
    child
  }
  data () {
    return {
      msg: '父组件的值'
    }
  }
}

<!-子组件--->
<template>
  <div></div>
</template>

<script>
export default {
  props:{
      msg:{
          type:String,
          default:''
      }
  }
  mounted(){
      console.log(this.msg)
  }
}

父组件调用子组件方法(引入子组件→给注册的子组件注册引用信息→调用子组件方法)

<!-父组件--->
<template>
  <div>
    <child ref="child" ></child>
  </div>
</template>

<script>
import child from './child'
export default {
  components:{
    child
  }
  mounted(){
      this.$refs.child.getData() // 调用
  }
}

<!-子组件--->
<template>
  <div></div>
</template>

<script>
export default {
  methods:{
      getData(){
          console.log('父组件调用了我的方法')
      }
  }
}
子传父值,子调用父方法

子组件向父组件传值(方法一)

<!-父组件--->
<template>
  <div>
    <child @func="getData"></child>
  </div>
</template>

<script>
import child from './child'
export default {
  components:{
    child
  }
  mounted(){
      getData(val){
          console.log(val) //我是子组件的数据
      }
  }
}

<!-子组件--->
<template>
  <div></div>
</template>

<script>
export default {
    data(){
        msg: "我是子组件的数据",
    }
    mounted(){
        //func: 是父组件指定的传数据绑定的函数,this.msg:子组件给父组件传递的数据
        this.$emit('func', this.msg)
     }
}

子组件向父组件传值(方法二)

父组件直接获取子组件里的data数据
this.$ref.child.msg

子组件调用父组件方法(方法一)

子组件直接通过this.$parent.event调用 //event为需要调用的父组件的事件

子组件调用父组件方法(方法二)

子组件里用$emit向父组件触发一个事件,父组件监听这个事件就行了(与子组件向父组件传值(方法一)一致)

子组件调用父组件方法(方法三)

父组件把方法传入子组件中,在子组件里直接调用这个方法
<!-父组件--->
<template>
  <div>
    <child :getData="getData"></child>
  </div>
</template>

<script>
import child from './child'
export default {
  components:{
    child
  }
  methods:{
      getData(){
        console.log('这是父组件的方法') 
      }
  }
}

<!-子组件--->
<template>
  <div></div>
</template>

<script>
export default {
  props:{
      getData:{
          type:Function,
          default:null
      }
  }
  mounted(){
    if(this.getData){
        this.getData()
    }
  }
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值