快速了解Vue父子组件传值以及父调子方法、子调父方法

yizhihongxing

快速了解Vue父子组件传值以及父调子方法、子调父方法

在Vue中,组件通常会通过props属性传递数据,也可以使用$emit方法触发自定义事件来实现父调子方法和子调父方法。

父子组件传值

通过props属性传递数据

在父组件中使用props属性传递数据,子组件中使用props接收数据。比如:

<!-- 父组件 -->
<template>
  <div>
    <child-component :name="myName"></child-component>
  </div>
</template>
<script>
import ChildComponent from './ChildComponent.vue'
export default {
  components: {
    ChildComponent
  },
  data () {
    return {
      myName: 'John'
    }
  }
}
</script>

<!-- 子组件 -->
<template>
  <div>
    My name is {{name}}
  </div>
</template>
<script>
export default {
  props: ['name']
}
</script>

这里,父组件中将myName数据通过props传递给子组件,在子组件中使用name来接收。

通过$emit方法触发事件传递数据

在子组件中使用$emit方法触发父组件中的自定义事件,将数据传递给父组件。比如:

<!-- 父组件 -->
<template>
  <div>
    <child-component @changeName="changeMyName"></child-component>
  </div>
</template>
<script>
import ChildComponent from './ChildComponent.vue'
export default {
  components: {
    ChildComponent
  },
  data () {
    return {
      myName: 'John'
    }
  },
  methods: {
    changeMyName (newName) {
      this.myName = newName
    }
  }
}
</script>

<!-- 子组件 -->
<template>
  <div>
    <input v-model="newName" @keyup.enter="changeName()">
    <button @click="changeName()">Change Name</button>
  </div>
</template>
<script>
export default {
  data () {
    return {
      newName: ''
    }
  },
  methods: {
    changeName () {
      this.$emit('changeName', this.newName)
      this.newName = ''
    }
  }
}
</script>

这里,子组件中使用$emit方法触发父组件中的changeName事件,并将newName数据传递给父组件。

父调子方法

为了使用父组件调用子组件的方法,我们需要先获取子组件的实例,可以使用ref属性来获取子组件的实例。比如:

<!-- 父组件 -->
<template>
  <div>
    <child-component ref="child"></child-component>
    <button @click="callChildMethod()">Call Child Method</button>
  </div>
</template>
<script>
import ChildComponent from './ChildComponent.vue'
export default {
  components: {
    ChildComponent
  },
  methods: {
    callChildMethod () {
      this.$refs.child.childMethod()
    }
  }
}
</script>

<!-- 子组件 -->
<template>
  <div>
    This is Child Component
  </div>
</template>
<script>
export default {
  methods: {
    childMethod () {
      alert('This is child method')
    }
  }
}
</script>

这里,父组件中使用ref属性获取了子组件实例,并在调用子组件的childMethod方法。

子调父方法

为了使用子组件调用父组件的方法,我们同样可以使用$emit方法触发自定义事件,从而被父组件所监听。比如:

<!-- 父组件 -->
<template>
  <div>
    <child-component @callParentMethod="parentMethod"></child-component>
    <div>{{message}}</div>
  </div>
</template>
<script>
import ChildComponent from './ChildComponent.vue'
export default {
  components: {
    ChildComponent
  },
  data () {
    return {
      message: ''
    }
  },
  methods: {
    parentMethod (msg) {
      this.message = 'This is returned message from child: ' + msg
    }
  }
}
</script>

<!-- 子组件 -->
<template>
  <div>
    <button @click="callParentMethod()">Call Parent Method</button>
  </div>
</template>
<script>
export default {
  methods: {
    callParentMethod () {
      this.$emit('callParentMethod', 'Hello, parent')
    }
  }
}
</script>

这里,子组件中调用了父组件中的parentMethod方法,并将数据'Hello, parent'传递给父组件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:快速了解Vue父子组件传值以及父调子方法、子调父方法 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue 中filter的多种用法

    下面是一份关于 Vue 中 filter 的多种用法的攻略。 简介 在 Vue 中,filter 是一种非常实用的功能,它可以让我们在模板中格式化数据。例如,在展示日期时,可以使用 Date Filter 将日期格式化为固定的格式,或者在展示价格时,可以使用 Currency Filter 将价格格式化为指定的货币单位。 Vue 中 Filter 的基本用法…

    Vue 2023年5月27日
    00
  • 利用Vue构造器创建Form组件的通用解决方法

    那么现在开始讲解“利用Vue构造器创建Form组件的通用解决方法”的攻略。 为什么要利用Vue构造器创建Form组件 在Vue的组件开发过程中,我们经常会遇到需要创建Form表单的情况。虽然Vue提供了v-model和表单元素等一系列让表单操作变得方便的指令,但是对于大型的表单,尤其是需要复用的表单而言,我们发现通过模板编写的方式重复性非常高,会导致代码的冗…

    Vue 2023年5月28日
    00
  • 关于element ui的菜单default-active默认选中的问题

    关于element ui的菜单default-active默认选中的问题: 1. 理解 default-active 属性 default-active 属性是 Element UI 中菜单组件 el-menu 的一个选项,作用是设置菜单默认选中的项。使用该属性时,只需将需要默认选中的菜单项的 index 值设置给 default-active 即可。 例如…

    Vue 2023年5月28日
    00
  • TypeScript在vue中的使用解读

    TypeScript在Vue中的使用解读 为什么要使用TypeScript与Vue一起使用 Vue.js是一款前端开发框架,旨在简化前端开发的复杂性,提高代码的可读性和可维护性。另一方面,TypeScript是一种JavaScript的超集,可以提供编译时类型检查和更好的IDE支持等功能,可以让开发更加容易和稳定。 使用TypeScript和Vue.js一起…

    Vue 2023年5月28日
    00
  • vue实现可以快进后退的跑马灯组件

    下面我将为你详细讲解“Vue实现可以快进后退的跑马灯组件”的完整攻略。 首先,我们需要了解跑马灯组件(Carousel)的基本功能。跑马灯组件主要是用于轮播图片、文字等内容,跑马灯的轮播速度、周期、方向等参数都可以根据实际需求进行配置。在这个基础上,我们可以实现一个快进后退功能的跑马灯组件。 接下来,我将根据以下步骤详细讲解这个过程: 1. 确定跑马灯组件的…

    Vue 2023年5月29日
    00
  • vue中导出Excel表格的实现代码

    下面是详细讲解如何在Vue中实现导出Excel表格的步骤。 1. 安装相关插件 要在Vue中导出Excel表格,需要安装以下插件: xlsx: 用于构建Excel文件。 file-saver: 用于提供文件下载功能。 在项目的根目录下使用npm进行安装: npm install xlsx file-saver –save 2. 编写导出方法 在Vue的组件…

    Vue 2023年5月27日
    00
  • vue实现导航栏效果(选中状态刷新不消失)

    Vue实现导航栏效果,一般情况下会根据当前路由的路径来判断当前页面是否高亮选中,但是在刷新页面后,状态会丢失。下面是实现选中状态刷新不消失的完整攻略。 步骤一:路由配置 首先,需要定义好路由配置,这里以vue-router为例。 import Vue from ‘vue’ import VueRouter from ‘vue-router’ Vue.use(…

    Vue 2023年5月29日
    00
  • vue3如何使用ref获取元素

    下面是关于vue3中如何使用ref获取元素的完整攻略: 什么是ref ref 是 Vue3 中一个新增的 API,可以用来获取/操作组件中的 DOM 元素或者子组件实例。 如何使用ref 在Vue3中,可以通过 ref 对象来获取组件中的DOM元素或子组件实例。获取的方式如下: <template> <div class="el-…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部