当前位置:首页 > VUE

vue实现页面传值

2026-02-25 02:56:06VUE

使用 Props 父子组件传值

父组件通过 v-bind 或简写 : 向子组件传递数据,子组件通过 props 接收。父组件中定义数据并绑定到子组件标签上:

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

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

子组件声明 props 接收数据:

<script>
export default {
  props: ['message'],
  mounted() {
    console.log(this.message) // 输出: Hello from parent
  }
}
</script>

使用自定义事件子传父

子组件通过 $emit 触发事件,父组件通过 v-on 或简写 @ 监听事件。子组件触发事件并传递数据:

<template>
  <button @click="sendData">Send to Parent</button>
</template>

<script>
export default {
  methods: {
    sendData() {
      this.$emit('child-event', { data: 'Child data' })
    }
  }
}
</script>

父组件监听事件并处理数据:

<template>
  <ChildComponent @child-event="handleChildEvent" />
</template>

<script>
export default {
  methods: {
    handleChildEvent(payload) {
      console.log(payload.data) // 输出: Child data
    }
  }
}
</script>

使用 Vuex 状态管理

适合跨层级或复杂组件通信。定义 store 并管理共享状态:

// store.js
import { createStore } from 'vuex'

export default createStore({
  state: {
    sharedData: null
  },
  mutations: {
    setData(state, payload) {
      state.sharedData = payload
    }
  }
})

组件中提交 mutation 更新状态:

this.$store.commit('setData', 'Global data')

组件中通过计算属性获取状态:

computed: {
  sharedData() {
    return this.$store.state.sharedData
  }
}

使用 Event Bus 跨组件通信

创建全局事件总线实现任意组件间通信。创建 eventBus.js

import { createApp } from 'vue'
export const eventBus = createApp({})

组件A发送事件:

import { eventBus } from './eventBus'
eventBus.config.globalProperties.$emit('custom-event', 'Event data')

组件B监听事件:

import { eventBus } from './eventBus'
eventBus.config.globalProperties.$on('custom-event', (data) => {
  console.log(data) // 输出: Event data
})

使用路由参数传值

通过路由的 paramsquery 传递数据。定义路由时声明参数:

const routes = [
  { path: '/user/:id', component: User }
]

跳转时传递参数:

this.$router.push({ path: '/user/123' })
// 或通过query
this.$router.push({ path: '/user', query: { id: 123 } })

目标组件获取参数:

this.$route.params.id // 获取params
this.$route.query.id  // 获取query

使用 provide/inject 跨层级传值

祖先组件通过 provide 提供数据:

export default {
  provide() {
    return {
      providedData: 'Data from ancestor'
    }
  }
}

后代组件通过 inject 获取数据:

export default {
  inject: ['providedData'],
  mounted() {
    console.log(this.providedData) // 输出: Data from ancestor
  }
}

使用 $refs 直接访问组件

父组件通过 ref 属性获取子组件实例:

<template>
  <ChildComponent ref="childRef" />
  <button @click="callChildMethod">Call Child</button>
</template>

<script>
export default {
  methods: {
    callChildMethod() {
      this.$refs.childRef.childMethod()
    }
  }
}
</script>

子组件定义方法:

export default {
  methods: {
    childMethod() {
      console.log('Child method called')
    }
  }
}

vue实现页面传值

标签: 页面vue
分享给朋友:

相关文章

简易实现vue

简易实现vue

简易 Vue 实现思路 核心是数据劫持结合发布-订阅模式,通过 Object.defineProperty 或 Proxy 监听数据变化,触发视图更新。 数据劫持实现 class Observer…

vue实现3d宇宙

vue实现3d宇宙

Vue实现3D宇宙效果 使用Three.js库 Three.js是一个强大的JavaScript 3D库,可以轻松集成到Vue项目中。安装Three.js依赖: npm install three…

eventbus vue实现

eventbus vue实现

EventBus 实现原理 EventBus 是一种发布/订阅模式,用于 Vue 组件间的通信。核心是通过一个中央事件总线管理事件监听和触发。 创建 EventBus 在 Vue 项目中创建一个独…

vue实现ai

vue实现ai

Vue 实现 AI 功能 Vue.js 可以通过集成第三方 AI 服务或本地 AI 模型来实现 AI 功能。以下是几种常见的方法: 集成第三方 AI API 使用 Vue 调用如 OpenAI、G…

实现 vue 框架

实现 vue 框架

Vue 框架的基本实现 Vue 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现 Vue 框架的基本步骤和核心概念。 核心概念 响应式数据绑定 Vue 的核心特性之一是响应式…

vue 动画 实现

vue 动画 实现

vue 动画实现方法 Vue 提供了多种方式实现动画效果,主要包括过渡动画和动态动画两类。 使用 <transition> 组件实现基础过渡 通过 Vue 内置的 <transi…