Vue组件间数据传递的方式(3种)

Vue组件间数据传递的方式有以下三种:

1. props 与 events

使用props将数据从父组件传递到子组件,使用events将数据从子组件传递到父组件。

父组件传递数据给子组件

在父组件中,可以通过在子组件中使用props属性传递数据。props属性是一个数组,其中包含子组件中要接收的属性名。

<template>
  <div>
    <child-component :message="msg"></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue'

export default {
  components: { ChildComponent },
  data() {
    return {
      msg: 'Hello World'
    }
  }
}
</script>

在子组件中,可以像这样通过props接收数据。

<template>
  <div>
    {{ message }}
  </div>
</template>

<script>
export default {
  props: {
    message: String
  }
}
</script>

子组件传递数据给父组件

在子组件中,使用$emit方法来触发事件并传递数据。

<template>
  <div>
    <button @click="onClick">Click me!</button>
  </div>
</template>

<script>
export default {
  methods: {
    onClick() {
      this.$emit('button-clicked', 'data from child component')
    }
  }
}
</script>

在父组件中,可以通过v-on指令绑定子组件的事件并接收数据。

<template>
  <div>
    <child-component @button-clicked="onButtonClicked"></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue'

export default {
  components: { ChildComponent },
  methods: {
    onButtonClicked(data) {
      console.log(data) // 'data from child component'
    }
  }
}
</script>

2. $emit 与 $on

使用Vue实例中的$emit方法和$on方法来进行事件的发送和接收。

这种方式的实现和第一种方式类似,只是使用的是Vue实例中的方法。

发送事件

在发送事件的组件中使用$emit方法

<template>
  <div>
    <button @click="onClick">Click me!</button>
  </div>
</template>

<script>
export default {
  methods: {
    onClick() {
      this.$root.$emit('event', 'data from root Vue instance')
    }
  }
}
</script>

接收事件

在接收事件的组件中使用$on方法接收事件

<template>
  <div>
    {{ data }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      data: ''
    }
  },
  mounted() {
    this.$root.$on('event', data => {
      this.data = data
    })
  },
  beforeDestroy() {
    this.$root.$off('event')
  }
}
</script>

3. Vuex

Vuex是Vue.js的官方状态管理工具,可以用于在多个组件之间共享状态。

<template>
  <div>
    <h1>{{ count }}</h1>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
import {mapState, mapActions} from 'vuex'

export default {
  computed: {
    ...mapState(['count'])
  },
  methods: {
    ...mapActions(['increment'])
  }
}
</script>

在另一个组件中,可以通过dispatch一个action来修改count的值。

<template>
  <div>
    <button @click="increment">Increment another component</button>
  </div>
</template>

<script>
import {mapActions} from 'vuex'

export default {
  methods: {
    ...mapActions(['increment'])
  }
}
</script>

这样,所有使用count的组件都会自动更新。

以上就是Vue组件间数据传递的三种方式,它们各自有不同的应用场景,需要根据具体情况进行选择。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue组件间数据传递的方式(3种) - Python技术站

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

相关文章

  • vue如何基于el-table实现多页多选及翻页回显过程

    实现多页多选及翻页回显的关键在于要在不同页之间共享数据。Vue.js提供了一些辅助方法来进行数据处理和页面渲染。我们可以使用Vue.js的计算属性和方法来实现该功能。 步骤一:设置选中项和分页 首先,我们需要在Vue实例中通过数据来记录选中的项和当前页数,具体代码如下: <template> <el-table :data="ta…

    Vue 2023年5月27日
    00
  • Vue mockjs编写假数据并请求获取实现流程

    Vue MockJS是一款用于前端mock数据的工具。其可以模拟请求API返回假数据,用于前端开发时进行数据调试、测试。本文将详细介绍Vue MockJS编写假数据并请求获取的实现流程。 1. 安装Vue MockJS 在使用Vue MockJS之前,需要确保在项目中已经安装了Vue,接着可以通过npm或yarn来安装Vue MockJS。 # 使用npm进…

    Vue 2023年5月28日
    00
  • 快速上手uni-simple-router

    以下是“快速上手uni-simple-router”的完整攻略。 简介 uni-simple-router是一个基于vue-router封装的路由库,专注于uni-app移动端应用开发。相比vue-router,它的优势在于更为简单易用,且兼容性更好。 安装 在uni-app项目的根目录下,执行以下命令进行安装: npm install uni-simple…

    Vue 2023年5月27日
    00
  • 从vue源码解析Vue.set()和this.$set()

    从 Vue 源码解析 Vue.set() 和 this.$set() 在 Vue 中,我们使用 Vue.set() 或 this.$set() 来设置响应式对象的新属性或更新已有属性。这个方法的底层实现原理比较复杂,本文将从源码角度解析其底层实现过程。 Vue.set() 和 this.$set() 概述 在 Vue.js 中,我们可以使用 Vue.set(…

    Vue 2023年5月27日
    00
  • VUE实现时间轴播放组件

    下面我来为您讲解VUE实现时间轴播放组件的完整攻略。 步骤一:初始化项目并安装依赖 首先,我们需要在本地初始化一个Vue项目并安装依赖: vue create my-timeline-app cd my-timeline-app npm install vue2-vis vis-data vis-timeline –save 我们使用了一个名为vis的第三…

    Vue 2023年5月29日
    00
  • Vue 监听列表item渲染事件方法

    Vue 提供了许多从简单的 v-on 指令到复杂的自定义事件的事件监听器,用于应对各种需要与用户交互或动态响应的场景。在 Vue 列表组件渲染中,我们经常需要监听列表 item 的渲染事件以执行一些自定义的操作,如何实现呢?本文将为大家介绍 Vue 监听列表 item 渲染事件的方法及应用。 理解 Vue 列表渲染过程 在介绍如何监听列表 item 渲染事件…

    Vue 2023年5月27日
    00
  • vue改变循环遍历后的数据实例

    要改变vue中循环遍历后的数据实例,一般会采用以下两种方式: 1.直接修改数组 vue中使用v-for进行循环遍历时,实际上是遍历数组来生成页面内容。因此,我们可以直接对绑定的数据数组进行修改,来达到改变循环遍历后的数据实例的目的。下面是一个示例: <template> <div> <p v-for="(item, i…

    Vue 2023年5月27日
    00
  • vue-cli创建的项目中的gitHooks原理解析

    首先,讲解“vue-cli创建的项目中的gitHooks原理解析”需要了解以下几个概念: git hooks:是一种在特定事件发生时,Git 自动执行脚本的机制,可以用它来自定义钩子函数,在 Git 事件发生时触发执行。 vue-cli:是一个脚手架工具,用于快速创建 Vue 项目,提供了一系列的预设配置,可以快速搭建 Vue 项目的基本框架。 husky:…

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