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

快速了解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日

相关文章

  • 详解Vuex的属性

    下面就详细讲解一下Vuex的属性: Vuex的属性 Vuex是一个专为Vue.js应用程序开发的状态管理模式,它集中管理Vue应用程序中的所有组件的状态。在Vuex中,有几个重要的属性:state、mutations、actions、getters和modules,下面将逐一进行详解。 state state是Vuex中存储响应式数据的地方,唯一的数据源。当…

    Vue 2023年5月27日
    00
  • vue3日历控件的具体实现

    下面我将为你详细讲解“Vue3日历控件的具体实现”的完整攻略。 1. 前置知识 在开始具体实现前,需要了解的前置知识有: 基本的Vue3语法和Vue3的生命周期 Vue3的响应式数据和计算属性的使用方式 Date对象以及常用的时间处理库如moment.js 2. 实现思路 2.1 整体结构 我们需要实现一个日历控件组件,那么它的整体结构应该如下: <t…

    Vue 2023年5月28日
    00
  • Vue通过字符串关键字符实现动态渲染input输入框

    当我们需要动态生成一个输入框时,在Vue中可以通过字符串关键字符来实现,以下是具体步骤: 在Vue组件中定义一个data属性,用于存储动态生成的输入框的值 data() { return { inputValue: ” } }, 在模板中使用v-model绑定data属性,将动态生成的输入框与data属性进行双向绑定 <template> &l…

    Vue 2023年5月27日
    00
  • Vue2 Element Schema Form 配置式生成表单的实现

    下面是“Vue2 Element Schema Form 配置式生成表单的实现”完整攻略: 1. Vue2 Element Schema Form 简介 Vue2 Element Schema Form 是基于 Vue.js 2.x、Element UI 和 JSON Schema 构建的,通过配置式的方式生成表单的开源组件。它可以允许用户在不编写一行表单组…

    Vue 2023年5月27日
    00
  • 详解vue中v-on事件监听指令的基本用法

    下面是对“详解vue中v-on事件监听指令的基本用法”的完整攻略。 1. 什么是v-on事件监听指令? 在Vue中,可以使用v-on事件监听指令来绑定DOM事件,可以在事件发生时执行特定的函数。具体来说,v-on指令需要绑定一个事件类型和指定的函数。事件类型可以是所有的DOM事件,例如click、input、change等等。 v-on指令的缩写是@,意味着…

    Vue 2023年5月28日
    00
  • 详解vue-cli下ESlint 配置说明

    下面我将为你提供详细的“详解vue-cli下ESlint 配置说明”的攻略。 1. 前言 ESLint 是一个可以帮助我们约束代码风格的工具,Vue CLI 集成了 ESLint,我们可以直接在 Vue 项目里进行代码风格检查。如果要通过 ESLint 实现代码的自动修复功能,需要借助于 Prettier 这个代码格式化工具。 2. ESLint 配置文件 …

    Vue 2023年5月28日
    00
  • 详解10分钟学会vue滚动行为

    详解10分钟学会vue滚动行为 本文将详细讲解如何在Vue中实现滚动行为,以满足用户在页面中的滚动需求。通过本文,你可以快速了解Vue的相关特性和API,快速上手Vue的开发。 Vue中的滚动行为实现 在Vue中,通过<router-link>组件的scroll-behavior属性,我们可以快速实现滚动行为。 首先,我们需要在router/in…

    Vue 2023年5月29日
    00
  • vue实现文件上传和下载

    下面就是 Vue 实现文件上传和下载的完整攻略。 文件上传 实现方式 文件上传可以采用传统的表单上传方式,也可以使用 Ajax 实现无刷新上传。这里我们以使用表单的方式为例进行讲解。 Vue.js 并没有提供直接上传文件的方法,需要借助第三方插件来实现。目前比较常用的插件有 vue-file-upload、vue-simple-upload、vue-uplo…

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