You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3组合式API中computed结合v-model与Vuex的双向绑定问题

Vuex 中结合 v-model 触发 mutation 的方案

不用非得改用v-bind:value加@input的写法,给计算属性添加setter就能直接通过v-model触发Vuex的mutation,完美适配v-model的双向绑定逻辑。

实现代码示例

模板部分保持v-model不变:

<input type="text" :id="phone" v-model="phone" />

脚本部分给computed添加setter:

import { useStore } from 'vuex'
import { computed } from 'vue'
export default {
    setup() {
        const store = useStore()
        // 带 setter 的计算属性
        const phone = computed({
            // getter:从 Vuex 获取状态
            get() {
                return store.getters['getPhone']
            },
            // setter:触发 mutation 修改状态
            set(newValue) {
                // 替换为你项目中实际的 mutation 名称
                store.commit('UPDATE_PHONE', newValue)
            }
        })
        return { phone }
    }
}

原理说明

  • 输入框取值时,v-model会调用computed的getter,从Vuex的getter中获取数据
  • 用户修改输入内容时,v-model会自动调用computed的setter,把新值传入并触发对应的mutation更新Vuex状态

这种写法既保留了v-model的简洁性,又遵循了Vuex的状态修改规范,无需额外编写包装函数。

内容的提问来源于stack exchange,提问作者Steve L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 11:03:14