Vue中v-model如何和Vuex结合起来

Vue的传值方式(二)——双向数据绑定【v-model】 原理 采用数据劫持结合发布者-订阅者模式的方式,通过**Object.defineProperty()**来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应监听回调。当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化。 vue 阅读详情

我的input框v-model绑定的是Vuex里的state,但是没有做到双向绑定。今天就聊一下如何优雅的绑定Vuex

  • 第一种
   <div>
        <input type="text" v-model="$store.state.Root.value" />
        <p>{{ $store.state.Root.value }}</p>
        // 这里为什么是state.Root.value 是我这里用到了vuex里的modules
        // 关于modules我会用新一篇文章来介绍,这里大家看看就行
    </div>
//我们都知道v-model是一种语法糖:
 <input type="text" v-model="val" />
  等价于

  <input type="text" :value="value" @input="value = $event.tagret.value" />

其实第一种方法就是利用了v-model的语法糖,至于为什么不需要mutations我猜是因为对象的引用关系

  • 第二种(优雅型,通过computed)这种方式一直是我在团队里比较建议使用的,因为它遵从了Vuex的核心理念:使用mutations来改变state
 <input v-model="modelData" />
 
computed: {
	    modelData: {
	        get() {
	             // 这里也是用了Vuex里的 modules 大家可以当成普通的变量来看
	            return this.$store.state.modelData
	        },
		         set(newVal) {
		             this.$store.commit('modelData', newVal)
		         }
	    }
}

注: computed其实可以接受两个参数:
get:当获取值时会触发
set:当修改值时会触发并有新值作为参数返回

  • 所以我在get里获取Vuex
  • 在set里调用 mutations
// store.js
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
const store = new Vuex.Store({
  state: {
  modelData:' '
    }
  },
  getters: {},
  mutations: {
     modelData(state, payload) {
         state.value = payload
     }
 }
  actions: {}
});

export default store;
window.store = store;
【error】vue-cli3 报Computed property “tableData” was assigned to but it has no setter. 对于vuex,使用getter获取state数据,并绑定到组件上,是很常规的操作 但是在严格模式下,在属于vuex的state上使用v-model这种需要双向绑定的数据类型,单单使用getter就会报错: Computed property “searchWebName” was assigned to but it has no setter. 错误代码如下: <!--vue--... 阅读详情

相关推荐

Vue基础入门

什么是vue? Vue是“渐进式框架”:vue.min.js只包含了vue最核心的内容「例如:options api、数据处理、template模板视图的解析等操作」;真实项目中我们还会根据需求,导入 + vuex 实现公共状态管理 + vue-router 实现SPA(single page application)单页面应用 + element-ui/antdv/iview/vant/cube... 基于这些UI组件库快速创建项目 + axios 实现数据通信 + ...

每天都要努力学习哦~~ 680

Vuex使用和v-model语法详细教程

/ 初始化vuex对象state: {// 管理数据count: 0,},})如何在组件中获取count?state: {// 管理数据},// d定义mutations}})mutations是一个对象,对象中存放修改state的方法// 方法里的参数 第一个参数是当前store的state属性// 第二个参数payload 运输参数 调用mutations的时候 可以传递参数},},},如何在组件中调用mutations?actions: {

idiot_MAN的博客 1619

vue动态绑定v-model属性名

1.目标 首先配置列,根据配置渲染表单,每个表单项绑定配置中的属性 2.方案 <template v-for="(item) in showQueryColumns" > <el-col :key="item.prop" :xs = "24" :sm = "12" :md="12" :lg = "12" :xl = "6"> <!--字符串类型--> <el-form-item v-if="item.type==.

蛐蛐的博客 1万+

当 Vuex 遇上 v-mdel

vuex、v-model

qq_45050686的博客 571

OpenCASCADE(OCC)读取 STEP 模型文件并在MFC中显示

OpenCASCADE(OCC)读取 STEP 模型文件并在MFC中显示

weixin_61900468的博客 1万+

【多媒体交互】Unity+普通摄像头实现UI事件分析

利用摄像头捕捉用户的手势或动作,结合坐标映射与事件系统触发UI交互

qq_38350004的博客 1322

v-model绑定vuex的state

第一种方法:直接 给 <input> 中绑定 value,然后侦听 input 或者 change 事件,在事件回调中调用一个方法通过 commit 方法委派给 mutation 执行来修改 Vuex 中的数据。在Vue中,我们可以使用"v-model"指令将表单元素的值和Vue实例的数据进行双向绑定。在计算属性或者方法中使用Vuex的commit方法或者dispatch方法来触发相关的mutations或者actions。在组件中使用计算属性或者方法,将本地的data属性和Vuex的state进行关联。

cccbbbmmm的博客 797

【学习体会】Lighttools8.4.0:简单光学系统实例

添加球型光源(SphereSource)和表面接收器: 对光线模拟的参数进行设置: 光线追踪-模拟输入 要追踪的光线总数,决定模拟的准确度,总数越多,准确度越高,当然耗时更多 预览光线数量是模拟之后可以看到的示意光线(黑线),一般是100~1000,随意设置 点击,开始模拟: (模拟结果) 如果光线太多,则会出现,可以看到剩余时间 照度分析: 分析-照度显示-光栅图表 ...

LeonJin的博客 1万+

vue中v-model直接绑定vuex中的状态属性遇到的问题

vue中v-model直接绑定vuex中的状态属性遇到的问题一、问题描述二、问题解决 一、问题描述 最近做项目,遇到这样一个问题。我在vuex的state中保存了一个状态属性,当点击某一按钮的时候,改变其值,然后另一个组件也用到了这个属性,需要用v-model绑定,我就想着直接绑定用v-model = 'this.$store.state.xxx',结果报错了,说这个属性没有定义。错误的代码 二、问题解决 上面之所以报错的原因是因为 v-model主要提供了两个功能,view层输入值影响data的

丑小鸭变黑天鹅的博客 2133

SAP打印错位问题终极解决指南:LP01设备格式设置全流程

本文详细解析了SAP系统中LP01设备打印错位问题的解决方案,重点介绍了SPAD事务码的配置流程和格式设置技巧。通过精准调整输出设备、设备类型和格式类型的匹配关系,有效解决'未定义格式'错误,确保打印内容准确对齐。文章还提供了高级排查方法和预防措施,帮助SAP管理员提升打印管理效率。

weixin_29311017的博客 390

QT+Opencv实现视频流播放

1.流程 首先通过opencv打开视频流,获取到数据帧,然后将数据帧转换为QT可识别的图像,显示到QT界面上。 2.opencv解码线程源码 //DecodeOpencv.h #pragma once #include <QThread> #include <QObject> #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/img..

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 6459

在Vue中v-model如何和Vuex结合起来

下一篇:解耦Vuex,使用模块化(modules)来搭建Vuex 工作的时候有好多人问到了一个问题: 我的input框v-model绑定的是Vuex里的state,但是没有做到双向绑定。今天就聊一下如何优雅的绑定Vuex - 第一种(暴力流) <div> <input type="text" v-model="$store.state.Root.value...

weixin_33824363的博客 4849

OpenClaw 多机器人多 Agent 模式:打造你的 AI 助手团队

OpenClaw多Agent模式为企业提供高效的AI助手团队解决方案。通过创建4个独立的飞书机器人(主助理、内容创作、技术开发、AI资讯),每个连接专属Gateway和Agent模型(如Claude Opus/Sonnet、Gemini 2.5),实现专业分工。相比单Agent模式,多Gateway架构具有配置清晰、互不干扰、无需手动切换等优势。系统采用Profile隔离机制,各Agent拥有独立配置和端口。部署过程包括创建机器人应用、配置Agent、运行自动化脚本等步骤,支持私聊或群组@使用。日常提供状态

Maynor的博客 5100

在严格模式下使用Vuex时,v-model赋值vuex会报错

报错信息为:[Vue warn]: Error in callback for watcher "function () { return this._data.$$state }": "Error: [vuex] Do not mutate vuex store state outside mutation handlers." 在严格模式下使用Vuex时,在v-model属于Vuex的状...

qq_32057581的博客 790

4、接收天线:接收电压、功率和传输系数

本文详细探讨了接收天线的性能参数,包括接收电压、功率和传输系数,通过建立等效电路模型分析接收偶极子的电流和开路电压,并定义电压和功率传输函数。研究揭示了天线长度、工作频率及极化失配对传输性能的影响,并提出了优化接收天线性能的策略,为天线系统的设计与优化提供了理论支持。

ll5678的博客 233

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Computed property “xxx“ was assigned to but it has no setter.

Computed property “xxx” was assigned to but it has nosetter:计算属性“inputValue”被赋值,但它没有setter。 原因: 组件中v-model=“XXX”,而XXX是vuex state中的某个变量 vuex中是单项流,v-model是vue中的双向绑定,但是在computed中只通过get获取参数值,没有set无法改变参数值 解决: vuex公共变量:在computed中添加get和set computed: { /.

芳草萋萋鹦鹉洲哦 9130

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

v-module绑定vuex里面的数据

当在严格模式中使用 Vuex 时,在属于 Vuex 的 state 上使用v-model会比较棘手: <input v-model="obj.message"> 假设这里的obj是在计算属性中返回的一个属于 Vuex store 的对象,在用户输入时,v-model会试图直接修改obj.message。在严格模式中,由于这个...

weixin_30444105的博客 467

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

vuex的计算属性_Vuex 计算器构建实例(input 组件)

Vuex 计算器构建实例最近想熟悉一下这个状态管理的神器,写了一下尤大大的小 demo,文档中说增加一个表单组件和之前的按钮比起来相对棘手,这里把遇到的小问题记录一下。如果对你有帮助的话,欢迎 star~安装环境还是使用官方的 vue-cli 脚手架进行搭建,废话不多说。// 克隆这个项目后输入以下命令进入开发模式npm installnpm run devVuex数据流Action决定了对...

weixin_39684454的博客 214

面试文章推荐+vue父子+vuex

https://juejin.cn/post/7061588533214969892#heading-91 面试介绍 推荐一个面试经验,觉得讲的挺透彻的。 除此之外还有自己的内容自己补充一下。 第一个:vue父子组件信息传递 首先是:父传子:是通过属性的方式 传值,传的值可以是任意类型,甚至可以是父组件的方法或者父组件对象本身。 在父组件中引入子组件;并在components中注册子组件;.通过属性向子组件中传值。 <template> <div> &l

cxuyuanLch的博客 1105

vue面试题总结

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

maomao_1995的博客 1077

Vuex - Do not mutate vuex store state outside mutation handlers

Form Handling When using Vuex in strict mode, it could be a bit tricky to use v-model on a piece of state that belongs to Vuex: <input v-model="obj.message"> Assuming obj is a computed ...

weixin_33774883的博客 118

bug:Vuex - Computed property “name” was assigned to but it has no setter

问题 多个组件通信问题 EventBus传值,频繁会导致接口重复调用 我以为eventBus是专门处理兄弟组件之间通信的,但是实际上,eventBus是专门处理同一个路由下的复杂组件之间通信的。 如果涉及夸路由的组件通信。可以考虑利用$route对象传参或者Vuex vuex完美解决 由于涉及v-model,需要特殊处理: bug computed property “XXX” was assigned to but it has no setter 处理 component computed: {

易函123 485
上一篇: vue 拖拽插件
下一篇: nuxtJs中间件拦截权限判断
娜娜啊吖
博客等级 码龄9年 66粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值