vue中this.$set()的用法

news2025/2/26 4:33:44

1、this.$set()的作用

向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。 this.$set()用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性。

简单来说:就是我们在methods中给数据添加了一个属性,我们能从控制台能打印出来,但是视图并没有及时更新,所以无法显示,但是借助于this.$set()方法我们就能成功的解决这个问题了,不仅能从控制台打印出来我们想要的值,而且相应的值也能实时刷新视图。

2、this.$set()的语法

this.$set(target, propertyName/index, value)

(1)target: 要更改的数据源(可以是一个对象或者数组)

(2)propertyName/index: 要更改的具体数据 (索引)

(3)value: 重新赋的值(any)

3、this.$set()的简单案例

(1)前端代码:

 <el-form>
                <el-form-item label="用户地址" prop="aloWhTo">
                    <el-select v-model="form.aloWhTo" @change="testConsistent" placeholder="请选择转入仓库" readonly filterable style="width:95%" >
                        <el-option v-for="item in WarehouseOptions" :key="item.whId" :label="item.whName" :value="item.whId">
                        </el-option>
                    </el-select>
                </el-form-item>
            </el-form>
<el-button type="primary"  @click="handClick()">更改数据 </el-button>

在这里插入图片描述

(2)当我们点击修改数据之后,我们会发现控制台的信息变化了,但是下拉框中的数据没有发生变化。

问题分析:当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的。

 handClick(){
                //不起作用
                this.WarehouseOptions[0] = { whId:'4',whName:'数据是否修改'}
                // let item = { whId:'4',whName:'数据是否修改'} //此时对象的值更改了,但是视图没有更新
                // this.$set(this.WarehouseOptions,0,item)
                console.log("测试 ")
                console.log(this.WarehouseOptions[0])
            },

在这里插入图片描述
(3)当我们采用this.$set()方法之后,问题解决。

 handClick(){
                //不起作用
                //this.WarehouseOptions[0] = { whId:'4',whName:'数据是否修改'}
                let item = { whId:'4',whName:'数据是否修改'} //此时对象的值更改了,但是视图没有更新
                this.$set(this.WarehouseOptions,0,item)
                console.log("测试 ")
                console.log(this.WarehouseOptions[0])
            },

在这里插入图片描述

4、this.$set()的应用场景

对于数组,对象,集合都可以用,比如在表格里面进行嵌套,可以根据索引进行修改并及时进行刷新!!!

大家可以参考我这篇博客中的案例强化一下对this.$set()的理解和认识!!

el-table+el-tree+el-select动态选择对应值:

https://blog.csdn.net/weixin_43388691/article/details/127385435?spm=1001.2014.3001.5501

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/405428.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

尚品汇项目笔记

尚品汇项目笔记git代码地址前端Vue核心1、vue文件目录分析2、项目配置3、组件页面样式4、清除vue页面默认的样式5、pages文件夹6、footer组件显示与隐藏7、路由传参8、多次执行相同的push问题9、定义全局组件10、代码改变时实现页面自动刷新11、Home首页其它组件12、封装axios1…

微信小程序实现分享至朋友圈的功能

微信小程序实现分享至朋友圈的功能 微信小程序从基础库 2.11.3 开始&#xff0c;可将小程序页面分享到朋友圈。适用于内容型页面的分享&#xff0c;不适用于有较多交互的页面分享。 1 设置分享状态 小程序页面默认不可被分享到朋友圈&#xff0c;开发者需主动设置“分享到朋友…

HBuilder X的下载与使用(详细步骤)

一、HBuilder X的下载 这里我们前往HBuilder下载官网地址&#xff1a;https://www.dcloud.io/进入官网后&#xff0c;我们可以看到HBuilder目前有两个版本&#xff0c;一个是windows版&#xff0c;一个是mac版。下载一个自己电脑适合的版本&#xff0c;这里我下载步骤用的是wi…

【Ajax】如何通过axios发起Ajax请求

✍️ 作者简介: 前端新手学习中。 &#x1f482; 作者主页: 作者主页查看更多前端教学 &#x1f393; 专栏分享&#xff1a;css重难点教学 Node.js教学 从头开始学习 ajax学习 文章目录axios  什么是axios  axios发起GET请求  axios发起POST请求  直接使用axios发起get…

JS解构赋值

一、前言 解构赋值语法是一种 Javascript 表达式。通过解构赋值&#xff0c;可以将属性/值从对象/数组中取出&#xff0c;赋值给其他变量。本文将讨论解构赋值的作用与其用法。 目录 一、前言 二、用途 三、数组的解构 1.变量声明并且赋值时的解构 2.默认值 3.剩余数组赋值…

js字符串转换为对象格式的3种方法

背景&#xff1a; js字符串转换为对象格式&#xff0c;一般都会想到JSON.parse()&#xff0c;但数据不是标准的 JSON 格式的时候会解析出错&#xff0c;这时候就可以使用eval() 函数、new Function()方法来转换。 常用3种将字符串string转为json对象 方法&#xff1a; var str…

如何解决 npm ERR! Cannot read properties of null (reading ‘pickAlgorithm‘)报错问题

1、问题描述&#xff1a; 在vue项目中&#xff0c;当我们在终端使用指令&#xff1a;npm install 下载 node_modules (节点_模块) 时出现报错的情况。 node_modules是安装node后用来存放用包管理工具下载安装的包的文件夹。比如webpack、gulp、grunt这些工具。 主要是这个原因&…

基于Web的疫情防控管理系统

目 录 1 绪论........................................................................................................... 1 1.1 研究背景..................................................................................................................... 1 1…

前端如何调用后端接口进行数据交互(极简)

前端调用后端接口&#xff0c;获得数据并渲染 一、介绍 一个完善的系统&#xff0c;前后端交互是必不可少的&#xff0c;这个过程可以分成下面几步&#xff1a; 前端向后端发起请求后端接口接收前端的参数后&#xff0c;开始层层调用方法处理数据后端将最终数据返回给前端接…

vue2和vue3的区别(由浅入深)

前言 vue2和vu3之前的区别&#xff0c;一直以来是面试必考题目&#xff0c;如何回答&#xff0c;回答的层次决定了面试者的对于vue2&#xff0c;3的理解&#xff0c;以及对于vue3目前稳定版本发展的方向的了解&#xff0c;即考察使用程度&#xff0c;又考察了学习能力&#xf…

babel安装失败/报错详细解决方案报以下错误: core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended

babel安装失败/报错详细解决方案 **问题&#xff1a;**在VSCode中执行命令 npm install --global babel-cli 报以下错误&#xff1a; core-js2.6.12: core-js❤️.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V…

Vue路由传参,页面刷新后参数丢失原因与解决方法

vue路由传参方法 在编写vue项目时&#xff0c;时常会使用路由在不同页面中传递参数&#xff0c;常见使用方式如下&#xff1a; this.$router.push({path: "/test",query: {a: 1,b: 2} }) 这样我们就传递了两个参数&#xff0c;在 /test 页面 就可以接收这两个参数…

Python 万能代码模版:爬虫代码篇

你好&#xff0c;我是悦创。 很多同学一听到 Python 或编程语言&#xff0c;可能条件反射就会觉得“很难”。但今天的 Python 课程是个例外&#xff0c;因为今天讲的 **Python 技能&#xff0c;不需要你懂计算机原理&#xff0c;也不需要你理解复杂的编程模式。**即使是非开发…

Vite打包性能优化之开启Gzip压缩

在使用 vite 进行项目打包时&#xff0c;默认已经帮我们做了一些优化工作&#xff0c;比如代码的压缩&#xff0c;分包等等。除此之外&#xff0c;我们还有一些可选的优化策略&#xff0c;比如使用 CDN &#xff0c;开启 Gzip 压缩等。本文会介绍在 vite 中使用插件来开启 Gzip…

vue-router路由懒加载

路由懒加载指的是打包部署时将资源按照对应的页面进行划分&#xff0c;需要的时候加载对应的页面资源&#xff0c;而不是把所有的页面资源打包部署到一块。避免不必要资源加载。&#xff08;参考vue项目实现路由按需加载(路由懒加载)的3种方式_小胖梅的博客-CSDN博客_vue懒加载…

原生微信小程序/uniapp使用空格占位符无效解决方法

最近碰到一个需求&#xff0c;在一个<text>文本中的前后添加空格占位符&#xff0c;总所周知&#xff0c;我并不会前端&#xff0c;于是我查看了原生微信小程序以及uniapp官方文档&#xff0c;得到了以下答案&#xff1a; 原生微信小程序官方文档 uniapp官方文档 从文档…

毕业设计-基于微信小程序的校园二手闲置物品交易系统

目录 前言 课题背景与简介 实现设计思路 一、需求分析 二、微信小程序云开发框架及其设计流程 三、功能测试以及性能测试 四、总结 实现效果样例 更多帮助 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要…

如何创建一个vue项目(详细步骤)

一、环境准备 1、安装 node.js 下载地址&#xff1a;https://nodejs.org/en/ 2、检查是否安装成功&#xff1a;输出版本号说明安装成功 二、搭建 vue 环境 1、全局安装脚手架 vue-cli 在命令行输入&#xff1a; npm install vue-cli -g &#xff08;vue-lcli2) npm install…

前端面试题及答案整理(2022最新版)

收集整理2022年最新前端面试题及答案&#xff0c;方便平时翻看记忆&#xff0c;欢迎各位大佬们补充。 一般来说&#xff0c;把下面基础中的高频题写熟练就差不多了。当然去面大厂这些远远不够&#xff0c;还要再刷一些算法题。 基础 高频 1.手写 instanceof // 原理&#x…

【Node.js实战】一文带你开发博客项目(使用假数据处理)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿 offer&#xff08;秋招&#xff09; &#x1f947;推荐学习&…