当前位置:首页 > VUE

vue实现发送值接受值

2026-03-27 05:16:03VUE

Vue 实现父子组件传值

父组件向子组件传值(Props)

在父组件中使用子组件时,通过绑定属性传递数据。子组件通过 props 接收数据。

父组件代码示例:

<template>
  <ChildComponent :message="parentMessage" />
</template>

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

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      parentMessage: 'Hello from parent'
    }
  }
}
</script>

子组件代码示例:

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

<script>
export default {
  props: {
    message: {
      type: String,
      required: true
    }
  }
}
</script>

子组件向父组件传值(自定义事件)

子组件通过 $emit 触发自定义事件,父组件通过监听该事件接收数据。

子组件代码示例:

<template>
  <button @click="sendMessage">Send Message</button>
</template>

<script>
export default {
  methods: {
    sendMessage() {
      this.$emit('message-sent', 'Hello from child')
    }
  }
}
</script>

父组件代码示例:

<template>
  <ChildComponent @message-sent="handleMessage" />
</template>

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

export default {
  components: {
    ChildComponent
  },
  methods: {
    handleMessage(message) {
      console.log(message) // 输出:Hello from child
    }
  }
}
</script>

兄弟组件间传值(Event Bus)

创建一个中央事件总线,用于兄弟组件间的通信。

vue实现发送值接受值

创建 Event Bus(event-bus.js):

import Vue from 'vue'
export const EventBus = new Vue()

发送消息的组件:

<template>
  <button @click="sendMessage">Send Message</button>
</template>

<script>
import { EventBus } from './event-bus'

export default {
  methods: {
    sendMessage() {
      EventBus.$emit('message-sent', 'Hello from sibling')
    }
  }
}
</script>

接收消息的组件:

<script>
import { EventBus } from './event-bus'

export default {
  created() {
    EventBus.$on('message-sent', message => {
      console.log(message) // 输出:Hello from sibling
    })
  },
  beforeDestroy() {
    EventBus.$off('message-sent')
  }
}
</script>

Vuex 状态管理

对于复杂应用,可以使用 Vuex 进行全局状态管理。

store.js 示例:

vue实现发送值接受值

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    message: ''
  },
  mutations: {
    setMessage(state, payload) {
      state.message = payload
    }
  },
  actions: {
    updateMessage({ commit }, message) {
      commit('setMessage', message)
    }
  },
  getters: {
    getMessage: state => state.message
  }
})

组件发送数据:

<script>
export default {
  methods: {
    sendMessage() {
      this.$store.dispatch('updateMessage', 'Hello from Vuex')
    }
  }
}
</script>

组件接收数据:

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

<script>
export default {
  computed: {
    message() {
      return this.$store.getters.getMessage
    }
  }
}
</script>

使用 provide/inject

适用于深层嵌套组件间的传值。

祖先组件:

<script>
export default {
  provide() {
    return {
      sharedMessage: 'Hello from ancestor'
    }
  }
}
</script>

后代组件:

<script>
export default {
  inject: ['sharedMessage'],
  created() {
    console.log(this.sharedMessage) // 输出:Hello from ancestor
  }
}
</script>

标签: vue
分享给朋友:

相关文章

vue实现导航栏切图

vue实现导航栏切图

Vue 实现导航栏切图 使用 Vue Router 实现基础导航 在 Vue 项目中,可以通过 Vue Router 实现导航栏的路由切换。创建一个导航栏组件,并在其中使用 <router-li…

vue实现sso

vue实现sso

Vue 实现 SSO(单点登录)方案 单点登录(SSO)允许用户通过一次登录访问多个相关系统。以下是基于 Vue 的实现方案: 使用 OAuth2/OpenID Connect 协议 OAuth2…

vue实现picker

vue实现picker

Vue 实现 Picker 组件的方法 在 Vue 中实现 Picker 组件可以通过多种方式完成,以下是几种常见的实现方法: 使用原生 HTML 和 CSS 实现 通过 Vue 的模板和样式绑定,…

javascript实现vue

javascript实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,主要包括数据绑定、响应式系统和虚拟 DOM。以下是一个简化的实现示例。 数据响应式系统 通过 Object.de…

vue实现datalist

vue实现datalist

使用 Vue 实现 HTML5 的 datalist 功能 HTML5 的 <datalist> 元素提供了一种自动完成输入框的功能,允许用户在输入时从预定义的选项列表中选择。以下是几种在…

vue 实现跳转

vue 实现跳转

Vue 实现页面跳转的方法 在 Vue 中实现页面跳转通常可以通过以下几种方式实现,具体选择取决于项目需求和技术栈(如是否使用 Vue Router)。 使用 Vue Router 进行编程式导航…