锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. Vue父子组件之间传递数据

Vue父子组件之间传递数据

0
  • 软件开发
  • 发布于 2024-08-19
  • 11 次阅读
黄健
黄健

父向子:v-bind()+props

父组件绑定属性向子组件传递数据,子组件通过props进行数据的接收。

父组件代码如下:

<template>
    <div id="app">
        <child :num="size"></child>
    </div>
</template>

<script>
    //引入组件
    import child from '@/zhao/data'
    export default{
        name:'app',
        data(){
            return{
                size:22,
            }
        },
        //注册组件
        components:{
            child,
        }
    }
</script>

子组件接收和使用数据:

<template>
  <div id="father">
    <!-- 使用数据  -->
    {
  { num }}
  </div>
</template>

<script>
export default {
  name:'father',
  data(){
    return{
    
    }
  },
  // 接收数据
  props: ['num'],
}
</script>

子向父:自定义事件 $emit

子组件部分代码:

<template>
    <div id = "login">
        <label>
            <p用户名:{
  {user}}</p>
            <input v-model="username" @change="setUser"/>
        </label>
    </div>
</template>

<script>
export default {
  name:'login',
  data(){
    return{
        username:'',
    }
  },
  methods:{
    setUser:function(){
        this.$emit('transferUser',this.username)
    }
  },
  components:{
      LoginDiv,
  },
}
</script>

父组件部分代码:

<template>
    <div id = "app">
        <LoginDiv @transferUser="getUser"></LoginDiv>
        <p用户名:{
  {user}}</p>
    </div>
</template>

<script>
//引入组件
import LoginDiv from '@/zhao/login'
export default {
  name:'app',
  data(){
    return{
        user:'',
    }
  },
  methods:{
    getUser(msg){
        this.user = msg
    }
  },
  components:{
      LoginDiv,
  },
}
</script>

总结:

(1)子组件传递数据:

this.$emit('自定义事件名', '要传递的数据')

(2)父组件接收数据:

<子组件名 @自定义事件名="方法名"/>
//.....
methods: {
    方法名(val) {
      // val 是子组件传递过来的数据
      // 、、、
    }
  }

父子双向:v-model + this.$emit()

父组件部分代码:

<template>
  <div class="home">
    <h1>Home 组件- - -{
  { count }}</h1>
    <button @click="count+=1">点击按钮, 数量 +1(父组件)</button>

    <Test v-model:num="count"/>
  </div>
</template>

<script>
import Test from './components/Test'

export default {
  name: 'Home',
  components: {
    Test,
  },
  data() {
    return {
      count: 1
    }
  },
}
</script>

子组件部分代码:

<template>
  <div>
    <h1>Test 组件- - -{
  { num }}</h1>
    <button @click="add">点击按钮 数量 +1(子组件)</button>
  </div>
</template>

<script>
export default {
  name: 'Test',
  props: ['num'],
  emits: ['update:num'], // 这行可写可不写,写了是方便统计emit方法,这里定义了的方法,后面this.$emit才能触发
  methods: {
    add() {
      this.$emit('update:num', this.num + 1)
   }
  }
}
</script>

<style>

</style>

总结:

(1)父组件核心代码

<子组件名 v-model:属性名="属性值"/>

(2)子组件核心代码

<template>
  <div>
    <!-- 使用数据  -->
    {
  { 属性名 }}
    <button @click="方法名">点击进行操作</button>
  </div>
</template>

<script>
export default {
  // 接收数据
  props: ['属性名'],
  emits: ['update:属性名'], // 这行可写可不写,写了是方便统计emit方法,写了的话,这里定义了的方法,后面this.$emit才能触发
  methods: {
    方法名() {
      this.$emit('update:属性名', 属性值操作)
   }
  }
}
</script>

原文链接: https://blog.csdn.net/friggly/article/details/125439482

标签: #VUE 61 #软件开发 1171
相关文章

万字:支付“核心系统”详解 2024-11-02 15:33

专栏作者:隐墨星辰 \| 主编:陈天宇宙 这篇文章也尝试化繁为简,探寻支付系统的本质,讲清楚在线支付系统最核心的一些概念和设计理念。 虽然支付行业已经过了风头最劲的时光,但跨境支付仍然在蓬勃发展,每年依然有很多新人进入这个行业,这篇文章尝试为这些刚入行的新人提供一点帮助。 文章只介绍一些支付行业十几

资深支付架构师视角:实战从问题定义到代码落地的完整套路 2024-11-02 15:33

前言 今天从一个实际案例入手,介绍站在架构师的角度,如何识别并定义问题,提炼需求,技术方案选型,再到详细设计,最后利用AI的能力协助写出核心的代码,验证与调优。 解决问题存在一定的模式,也可以称之为框架,总结出自己的思考和解题框架,以后再碰到同类型的问题就可以如庖丁解牛一样容易。 很多年前,我写代码

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

设计模式第16讲——迭代器模式(Iterator) 2024-10-08 11:24

一、什么是迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式访问集合中的元素。 二、角色组成 抽象迭代器(Iterator):定义了遍历聚合对象所需的方法

vue2路由和vue3路由区别及原理 2024-10-08 11:24

一、Vue2 与 Vue3 路由的区别 1. 创建路由实例方式的不同 Vue 2 中,通过 Vue.use() 注册路由插件,并通过 new VueRouter() 来创建路由实例。 import Vue from 'vue';import VueRouter from 'vue-router';i

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.