当前位置:首页 > VUE

vue联动如何实现

2026-02-18 05:25:12VUE

Vue 联动实现方法

数据绑定联动

通过 v-model:value 绑定数据,利用 watchcomputed 监听数据变化实现联动。例如表单输入框与显示区域联动:

<template>
  <input v-model="inputValue" />
  <p>{{ displayValue }}</p>
</template>

<script>
export default {
  data() {
    return {
      inputValue: ''
    }
  },
  computed: {
    displayValue() {
      return this.inputValue.toUpperCase()
    }
  }
}
</script>

父子组件联动

父组件通过 props 传递数据,子组件通过 $emit 触发事件实现双向通信:

vue联动如何实现

<!-- 父组件 -->
<template>
  <ChildComponent :value="parentValue" @update="handleUpdate" />
</template>

<script>
export default {
  data() {
    return {
      parentValue: ''
    }
  },
  methods: {
    handleUpdate(newValue) {
      this.parentValue = newValue
    }
  }
}
</script>

<!-- 子组件 -->
<template>
  <input :value="value" @input="$emit('update', $event.target.value)" />
</template>

<script>
export default {
  props: ['value']
}
</script>

跨组件状态管理

使用 Vuex 或 Pinia 管理共享状态,实现多个组件间的联动:

// store.js (Vuex 示例)
import { createStore } from 'vuex'

export default createStore({
  state: {
    sharedValue: ''
  },
  mutations: {
    updateValue(state, payload) {
      state.sharedValue = payload
    }
  }
})

// 组件A
<template>
  <input :value="$store.state.sharedValue" @input="updateStore" />
</template>

<script>
export default {
  methods: {
    updateStore(e) {
      this.$store.commit('updateValue', e.target.value)
    }
  }
}
</script>

// 组件B
<template>
  <p>{{ $store.state.sharedValue }}</p>
</template>

动态组件联动

通过 component 标签和 is 属性实现组件动态切换:

vue联动如何实现

<template>
  <button @click="currentComponent = 'ComponentA'">显示A</button>
  <button @click="currentComponent = 'ComponentB'">显示B</button>
  <component :is="currentComponent" />
</template>

<script>
export default {
  data() {
    return {
      currentComponent: 'ComponentA'
    }
  },
  components: {
    ComponentA,
    ComponentB
  }
}
</script>

事件总线联动

通过创建 Vue 实例作为事件中心,实现非父子组件通信:

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

// 组件A
import { eventBus } from './eventBus'
export default {
  methods: {
    sendMessage() {
      eventBus.config.globalProperties.$emit('message', 'Hello')
    }
  }
}

// 组件B
import { eventBus } from './eventBus'
export default {
  created() {
    eventBus.config.globalProperties.$on('message', (msg) => {
      console.log(msg)
    })
  }
}

表单元素联动

使用 v-model 绑定同一数据源实现表单元素间的联动:

<template>
  <select v-model="selectedOption">
    <option value="A">Option A</option>
    <option value="B">Option B</option>
  </select>

  <input 
    v-model="inputValue"
    :disabled="selectedOption !== 'A'"
    :placeholder="selectedOption === 'A' ? 'Enter value' : 'Disabled for Option B'"
  />
</template>

<script>
export default {
  data() {
    return {
      selectedOption: 'A',
      inputValue: ''
    }
  }
}
</script>

标签: 如何实现vue
分享给朋友:

相关文章

vue实现购物按钮

vue实现购物按钮

Vue 购物按钮实现方法 基础按钮实现 使用 Vue 的模板语法创建基础按钮组件,绑定点击事件处理购物逻辑: <template> <button @click="addToC…

拖拽式编程vue实现

拖拽式编程vue实现

拖拽式编程在 Vue 中的实现方法 使用 HTML5 原生拖放 API Vue 可以结合 HTML5 的拖放 API 实现基础拖拽功能。通过 draggable 属性标记可拖拽元素,监听 dragst…

vue实现后退

vue实现后退

Vue 实现后退功能的方法 在 Vue 中实现后退功能通常可以通过以下几种方式完成,具体取决于应用场景和需求。 使用 window.history API 通过原生 JavaScript 的 win…

vue树形实现

vue树形实现

Vue 树形组件实现方法 使用递归组件实现树形结构 递归组件是 Vue 中实现树形结构的常见方法。通过组件调用自身的方式,可以轻松构建多层嵌套的树形结构。 <template> &l…

vue插件实现

vue插件实现

Vue 插件实现方法 Vue 插件是一种向 Vue 应用程序添加全局功能的机制。插件可以包含全局指令、过滤器、混入、实例方法等。 插件的基本结构 一个 Vue 插件通常是一个对象或函数,需要暴露一个…

vue实现popup

vue实现popup

Vue 实现 Popup 弹窗 使用 Vue 原生组件 创建一个基本的 Vue 组件作为弹窗,通过 v-if 或 v-show 控制显示隐藏。 <template> <div&…