父子组件间传值和传方法

一、传值

1、父组件  传值给 子组件  

父组件中:

复制代码
//在父组件中引入子组件,并传入子组件内需要的值
<template>
    <div>
        <div>父组件</div>
        <!--(3)-->
        <child :message="parentMsg"></child>
    </div>
</template>
<script>
    import child from './child' //(1)引入child组件
    export default {
        data() {
            return {
                parentMsg: '传给子组件的值' //(2)在data中定义需要传入的值
            }
        },
        components: {
            child
        }
    }
</script>    
复制代码

子组件中:

复制代码
//在子组件中注册props,并使用父组件中传递过来的数据
<template>
    <div>
        <div>{{message}}</div>
    </div>
</template>
<script>
    export default {
        props: {
            message: String //定义传值的类型<br>    
        },
        //或者props:["message"]
        data: {}
    }
</script>
<style>
</style>
复制代码

2、子组件  传值给  父组件

在父组件中

复制代码
//自定义事件childFn,事件名为parentFn(parentFn事件用于接收子组件传递过来的值)
<parent @childFn="parentFn"></parent >

data: {
   message: ''
},
methods: {
  parentFn(payload) {
      this.message = payload;
  }
}
复制代码

 在子组件中:

复制代码
//点击send按钮触发sendMes事件,把message传给父组件
<button @click="sendMes">Send</button>

data() {
   return {
       // 默认
       message: '我是子组件的消息'
    }
},
methods: {
  sendMes() {
        this.$emit('childFn', this.message);
  }
}    
复制代码

二、调用方法

1、父组件 调用 子组件的方法

在父组件中

复制代码
<template>
  <div @click="parentMethod">
    <children ref="mychild"></children>
  </div>
</template>
 
<script>
  import children from 'children.vue'
  export default {
    data(){
      return {
      }
    },
    components: {      
      children
    },
    methods:{
      parentMethod() {     
        this.$refs.mychild.childMethod(); 
      }
    }
  }
</script>
复制代码

在子组件中

复制代码
<template>
  <div>
  </div>
</template>
 
<script>
  export default {
    data(){
      return {      
      }
    },
    methods:{
      childMethod() {
        alert('My name is asd')
      }
    }
  }
</script>
复制代码

2、子组件 调用  父组件的方法

在父组件中

复制代码
<template>
  <div>
       <asd @listenToChildEvent="showMsgFromChild"></asd>
       <div>{{ sss }}</div>
  </div>
</template>

<script>
 import asd from './compontents/asd.vue'
export default {
  components:{asd},
  data () {
    return {
      sss:''
    }
   },
    methods: {
        showMsgFromChild(data){
             this.sss = data
         },
    }
}
</script>
复制代码

在子组件中

复制代码
<template>
  <button @click="sendMsgToParent()">
    我是子组件,点击我向父组件传值
  </button>
</template>
 
<script>
  export default {
    data(){
      return {   
        message:'我是子组件的数据'
      }
    },
    methods:{
      sendMsgToParent() {
        this.$emit("listenToChildEvent",this.message)
      }
    }
  }
</script>
复制代码
posted @   小那  阅读(2273)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示