当前位置:首页 > 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实现store

vue实现store

Vue 实现 Store 在 Vue 中,可以通过 Vuex 或 Pinia 实现全局状态管理(Store)。以下是两种主流方案的实现方法。 使用 Vuex 实现 Store Vuex 是 Vu…

vue 实现递归

vue 实现递归

Vue 实现递归组件的方法 在 Vue 中实现递归组件通常用于处理树形结构数据,例如菜单、评论列表或文件目录。以下是实现递归组件的关键步骤: 定义递归组件 递归组件需要设置 name 属性,以便在…

vue实现同步

vue实现同步

Vue 实现同步的方法 在 Vue 中实现同步操作通常涉及数据绑定、状态管理和异步操作的处理。以下是几种常见的方法: 使用计算属性(Computed Properties) 计算属性基于响应式依赖进…

vue实现删除

vue实现删除

Vue 实现删除功能的方法 在 Vue 中实现删除功能通常涉及以下几个步骤: 数据绑定与列表渲染 使用 v-for 指令渲染列表数据,并为每个项绑定唯一标识符(如 id)。例如: <…

vue拖拽实现

vue拖拽实现

Vue 拖拽实现方法 使用 HTML5 原生拖拽 API HTML5 提供了原生拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 drop 事…

vue 实现排序

vue 实现排序

Vue 实现排序的方法 使用计算属性实现排序 通过计算属性对数组进行排序,可以保持原始数据不变。示例代码展示了如何对列表按名称升序排序: <template> <div>…