首页 > 其他分享 >Vue通过事件交互将数据从子组件传递到父组件

Vue通过事件交互将数据从子组件传递到父组件

时间:2022-11-14 14:37:13浏览次数:53  
标签:arr Vue 到父 ComponentForOne age msg vue 组件

首先有两个组件:

  父组件:App.vue

  子组件:ComponentForOne.vue

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <!-- 下面使用组件:组件标签名 -->
  <ComponentForOne @onEvent="getCpData" :title="msg" :age="age" :arr="arr"/>
</template>

<script>
// 此处引入组件 import 组件标签名 from 组件所在位置 
import ComponentForOne from './components/ComponentForOne.vue';

export default {
  name: 'App',
  components: {
    // 挂载组件
    ComponentForOne
  },
  methods:{
    getCpData(data){
      this.arr[2]=data
    }
  },
  data(){
    return{
      msg:"App中的msg",
      age:12,
      arr:["1","2","3"]
    }
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>
<template>
    <h1>Here is ComponentForOne!!</h1>
    <p>{{title}}</p>
    <p>age = {{age}}</p>
    <ul style="background-color:aqua">
        <li v-for="(item,index) in arr" :key="index">{{item}}</li>
    </ul>
    <p>将数据从自定义组件传递给App.vue</p>
    <button @click="sendApp">给app.vue</button>
</template>

<script>
// 导出
export default{
// 当前组件的名称,在导入使用时需要用到
name:"ComponentForOne",
data(){
    return{
        msg:"给App.vue"
    }
},
methods:{
    sendApp(){
        // 参数1:字符串,理论上是自定义字符串,但是需要有一定意义
        // 参数2:传递的数据
        this.$emit("onEvent",this.msg)
    }
},
// 通过props在组件间传递参数
props:{
    title:{
        type:String,
        default:""
    },
    age:{
        type:Number,
        default:20
    },
    arr:{
        type:Array,
        // 数组和对象必须使用函数返回
        default:function(){
            return []
        }
    }
}
}
</script>
<!-- scoped :如果添加了此属性,表示只在当前组件中生效 -->
<style scoped>
h1{
    color: aqua;
}
</style>

首先在子组件创建一个按钮和对应的点击事件 sendApp ,然后将点击事件写入methods:

事件内容就是 this.$emit("onEvent",this.msg),给父组件提供一个名为 onEvent 的事件该事件包含值 msg

然后父组件使用这个事件,并使用这个事件中的值:

 

 

 

 看看效果:

  点击之前:

 

点击之后:

 

 那么值就成功地从子组件传递到了父组件

 

标签:arr,Vue,到父,ComponentForOne,age,msg,vue,组件
From: https://www.cnblogs.com/0099-ymsml/p/16888932.html

相关文章

  • 局部组件注册
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content......
  • vue中的几个高级概念
    混入mixins官方解释混入(mixin)提供了一种非常灵活的方式,来分发Vue组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的......
  • Vue虚拟dom是如何被创建的
    先来看生成虚拟dom的入口文件:...import{parse}from'./parser/index'import{optimize}from'./optimizer'import{generate}from'./codegen/inde......
  • vue3实战-完全掌握ref、reactive
    知道大家使用Vue3的时候有没有这样的疑惑,“ref、rective都能创建一个响应式对象,我该如何选择?”,“为什么响应式对象解构之后就失去了响应式?应该如何处理?”今天咱们就来......
  • vue源码分析-响应式系统(二)
    为了深入介绍响应式系统的内部实现原理,我们花了一整节的篇幅介绍了数据(包括data,computed,props)如何初始化成为响应式对象的过程。有了响应式数据对象的知识,上一节的后......
  • vue源码分析-响应式系统(三)
    上一节,我们深入分析了以data,computed为数据创建响应式系统的过程,并对其中依赖收集和派发更新的过程进行了详细的分析。然而在使用和分析过程中依然存在或多或少的问题,这......
  • vue源码分析-响应式系统(一)
    从这一小节开始,正式进入Vue源码的核心,也是难点之一,响应式系统的构建。这一节将作为分析响应式构建过程源码的入门,主要分为两大块,第一块是针对响应式数据props,methods,da......
  • 一些网络编程方面的总结,以及redis、memcache、nginx组件的一些介绍
    网络编程主要关注的一些问题主要关注3个方面的问题连接的建立连接的断开消息的发送和到达连接的建立主要分为两种情况:服务器处理接受客户端的连接;服务端作为客户......
  • vue2项目中使用 vue2-org-tree组件实现组织架构图
    1.安装及使用操作流程npm安装:npmivue2-org-tree安装loader,不然会报错npminstall--save-devlessless-loadermain.js文件引入并使用:importVue2OrgTreefrom'vue......
  • vue处理图片路径出问题时显示默认图片
    <img:src="item.url?item.url:''"alt:onerror="defaultImg"/>这里一定要判断src,不然接口返回url为null时,后面的onerror不生效computed:{defaultImg(){......