当前位置:首页 > VUE

vue联动实现代码

2026-02-23 18:23:50VUE

Vue 联动实现代码示例

Vue 中实现联动效果通常涉及父子组件通信、数据绑定或状态管理。以下是几种常见场景的代码示例:

vue联动实现代码

表单联动(下拉框选择后动态加载内容)

<template>
  <div>
    <select v-model="selectedCountry" @change="loadCities">
      <option v-for="country in countries" :value="country.id" :key="country.id">
        {{ country.name }}
      </option>
    </select>

    <select v-model="selectedCity" :disabled="!cities.length">
      <option v-for="city in cities" :value="city.id" :key="city.id">
        {{ city.name }}
      </option>
    </select>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedCountry: null,
      selectedCity: null,
      countries: [
        { id: 1, name: '中国' },
        { id: 2, name: '美国' }
      ],
      cities: []
    }
  },
  methods: {
    loadCities() {
      // 模拟API请求
      const cityData = {
        1: [{ id: 101, name: '北京' }, { id: 102, name: '上海' }],
        2: [{ id: 201, name: '纽约' }, { id: 202, name: '洛杉矶' }]
      }
      this.cities = cityData[this.selectedCountry] || []
      this.selectedCity = null
    }
  }
}
</script>

组件间联动(通过事件总线)

// eventBus.js
import Vue from 'vue'
export const EventBus = new Vue()

// ComponentA.vue
<template>
  <button @click="sendMessage">发送消息</button>
</template>

<script>
import { EventBus } from './eventBus'
export default {
  methods: {
    sendMessage() {
      EventBus.$emit('message', 'Hello from Component A')
    }
  }
}
</script>

// ComponentB.vue
<script>
import { EventBus } from './eventBus'
export default {
  created() {
    EventBus.$on('message', (msg) => {
      console.log('Received:', msg)
    })
  }
}
</script>

使用Vuex实现状态联动

// store.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    }
  }
})

// ComponentA.vue
<template>
  <button @click="incrementCount">增加</button>
</template>

<script>
export default {
  methods: {
    incrementCount() {
      this.$store.commit('increment')
    }
  }
}
</script>

// ComponentB.vue
<template>
  <div>当前计数: {{ count }}</div>
</template>

<script>
export default {
  computed: {
    count() {
      return this.$store.state.count
    }
  }
}
</script>

动态组件联动

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

<script>
import ComponentA from './ComponentA'
import ComponentB from './ComponentB'

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

这些示例涵盖了Vue中实现联动的常见模式,可根据实际需求选择合适的实现方式。表单联动适合数据依赖场景,事件总线适合非父子组件通信,Vuex适合全局状态管理,动态组件适合视图切换场景。

标签: 代码vue
分享给朋友:

相关文章

vue 实现树状

vue 实现树状

Vue 实现树状结构的方法 递归组件实现树状结构 递归组件是 Vue 中实现树状结构的常见方法。通过组件自身调用自身,可以轻松构建多层级树状结构。 <template> <ul…

vue实现tree

vue实现tree

Vue 实现 Tree 组件 使用 Vue 实现 Tree 组件可以通过递归组件的方式来实现层级结构展示。以下是一个完整的实现方法: 基础递归组件实现 创建 Tree 组件文件 Tree.vue,使…

vue底部实现

vue底部实现

Vue 底部实现方法 在 Vue 项目中实现底部布局可以通过多种方式完成,以下是一些常见的方法: 使用固定定位 将底部元素固定在页面底部,适用于单页应用或需要始终显示的底部栏。 <temp…

vue实现tab

vue实现tab

Vue 实现 Tab 切换功能 在 Vue 中实现 Tab 切换功能可以通过多种方式完成,以下是几种常见的实现方法: 使用 v-if 和 v-show 指令 通过绑定 v-if 或 v-show 来…

vue实现拉伸

vue实现拉伸

Vue 实现元素拉伸功能 在Vue中实现元素的拉伸(拖拽调整大小)功能,可以通过监听鼠标事件结合CSS样式来实现。以下是两种常见实现方式: 使用原生事件监听 创建可拉伸的组件需要处理鼠标按下、移动和…

vue逻辑实现怎么实现

vue逻辑实现怎么实现

Vue 逻辑实现方法 Vue 的逻辑实现主要通过组件化、响应式数据、计算属性、方法、生命周期钩子等方式完成。以下是一些核心实现方法: 数据驱动与响应式 在 Vue 中,通过 data 选项定义响应式…