Vue中Vue.set()和this.$forceUpdate()的使用
1.给对象添加一个key值 成功的
<template>
<div>
<p>{{userInfo.name}}</p>
<p>{{userInfo.sex ? userInfo.sex : ''}}</p>
<button @click="updateName">修改userInfo</button>
</div>
</template>
<script>
export default {
data(){
return{
userInfo:{name:'小明'}
}
},
methods:{
updateName(){
this.userInfo.name='小红';
this.userInfo['sex']='男';//ok
}
}
}
</script>
2.给对象添加一个key值 失败的
<template>
<div>
<p>{{userInfo.name}}</p>
<p>{{userInfo.sex ? userInfo.sex : ''}}</p>
<button @click="updateName">修改userInfo</button>
</div>
</template>
<script>
export default {
data(){
return{
userInfo:{name:'小明'}
}
},
methods:{
updateName(){
this.userInfo['sex']='男';//失败的
}
}
}
</script>
3.好奇怪,为啥一个成功一个失败?
在什么情况下,直接给对象添加一个key值会失败?????
是在你直接给原来的对象上新增一个key值而且没有修改原来对象上的值如下
this.userInfo['sex']='男';
这样的修改肯定会失败的哈
你新增key值的时候;并且改变了原来已经有的key的内容;这样你新增的key值就可以更改成功
this.userInfo.name=this.userInfo.name+"213";
this.userInfo['sex']='男';//ok
为啥会这样是因为:
因为受现代JS的限制,vue不能检测到对象属性的添加或删除。(重要!!!)
vue不允许在已经创建的实例上动态添加新的根级响应式属性,(注意!!!)
不过可以使用Vue.set()方法将响应式属性添加到嵌套的对象上。
3.给对象添加key值的两种方式
<template>
<div>
<p>{{userInfo.name}}</p>
<p>{{userInfo.sex ? userInfo.sex : ''}}</p>
<button @click="updateName">修改userInfo</button>
</div>
</template>
<script>
import Vue from "vue" //Vue.set()的时候需要使用
export default {
data(){
return{
userInfo:{name:'小明'}
}
},
methods:{
updateName(){
// this.userInfo['sex']='男'; //失败的
// 解决方法一:注意要引入Vue
// Vue.set(this.userInfo, 'sex' ,'男')
//解决办法二;不推荐因为消耗性能
this.userInfo['sex']='男';
this.$forceUpdate()
}
}
}
</script>
4.forceUpdate的讲解
this.$forceUpdate()
它可以迫使Vue的实例重新渲染;
注意它仅仅影响实例本身以及插入插槽内的子组件;并不是所有的子组件
Vue中Vue.set()和this.$forceUpdate()的使用的更多相关文章
- vue中 Vue.set 的使用
Vue.set(vm.items, indexOfItem, newValue) 1.vm.items :源数据:2.indexOfItem : 要修改的数据的键3.newValue : 要修改的数据 ...
- Vue中vue.config的配置
vue-cli 3.x 脚手架搭建完成后,项目目录中没有 vue.config.js 文件,需要手动在根目录中创建 vue.config.js. vue.config.js 是一个可选的配置文件,如果 ...
- Vue 中渲染字符串形式的组件标签
在vue中如果要渲染字符串形式的标签,vue 提供了 v-html 指令,可以很方便的渲染出来.但是如果这个标签是一个组件,或者element-ui 的组件时,就不能解析出来了,因为v-html 只能 ...
- vue中如何去掉空格
一.问题 vue中当用户提交表单时,有的数据需要去掉前后空格然后再向后端发送. 二.解决方法 首先可以使用v-model.trim这个v-model修饰符去解决它,但是当用户输入\u200B时,这个方 ...
- Vue中控制更新的方式
一. 强制更新的实例方法 vm.$forceUpdate() 迫使 Vue 实例重新渲染.注意它仅仅影响实例本身和插入插槽内容的子组件,而不是所有子组件. 在没有留意到数组或对象的变更检测注意事 ...
- 8种Vue中数据更新了但页面没有更新的情况
目录 1.Vue 无法检测实例被创建时不存在于 data 中的 属性 2. Vue 无法检测'对象属性'的添加或移除 3.Vue 不能检测利用数组索引直接修改一个数组项 4.Vue 不能监测直接修改数 ...
- vue中如何不通过路由直接获取url中的参数
前言:为什么要不通过路由直接获取url中的参数? vue中使用路由的方式设置url参数,但是这种方式必须要在路径中附带参数,而且这个参数是需要在vue的路由中提前设置好的. 相对来说,在某些情况下直接 ...
- vue中的重要特性
一.vue中的自定义组件 html的代码: <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- Vue中comoputed中的数据绑定
Vue中的数据实现响应式绑定是在初始化的时候利用definePrototype的定义set和get过滤器,在进行组件模板编译时实现water的监听搜集依赖项,当数据发生变化时在set中通过调用dep. ...
- vue中使用stompjs实现mqtt消息推送通知
最近在研究vue+webAPI进行前后端分离,在一些如前端定时循环请求后台接口判断状态等应用场景用使用mqtt进行主动的消息推送能够很大程度的减小服务端接口的压力,提高系统的效率,而且可以利用mqtt ...
随机推荐
- 敏捷开发专家一席谈:云原生技术下的华为云DevOps实践之路
摘要:听华为云DevCloud首席技术布道师徐毅讲述云原生下的DevOps实践. 本文分享自华为云社区<敏捷开发专家一席谈:云原生技术下的华为云DevOps实践之路>,作者:华为云社区精选 ...
- IaaS首席架构师的架构设计思考与实践
摘要:本文分享了华为云Stack IaaS的设计思考与实践,基于公有云先进的架构技术和创新能力,采用重构改造+积木式搭配+抽屉式替换等方式,健康的.可持续的为客户不断的提供产品和服务. 本文分享自华为 ...
- 结MySQL 的一些知识点:MySQL 安装
MySQL 安装 所有平台的 MySQL 下载地址为: MySQL 下载 . 挑选你需要的 MySQL Community Server 版本及对应的平台. **注意:**安装过程我们需要通过开启管理 ...
- Docker 安装 Elasticsearch、Kibana
为了Skywalking 准备 elasticsearch 至少 需要2G内存 docker pull elasticsearch:7.9.3 docker run --name elasticsea ...
- Flink异步IO
本文讲解 Flink 用于访问外部数据存储的异步 I/O API. 对于不熟悉异步或者事件驱动编程的用户,建议先储备一些关于 Future 和事件驱动编程的知识. 对于异步 I/O 操作的需求 在与外 ...
- 【flask】蓝图的使用方式 g对象的使用 flask配置数据库连接池
目录 上节回顾 今日内容 1 蓝图的使用 2 g对象 g对象 vs request对象 3 数据库连接池 上节回顾 全局request对象.线程会处理请求,确保线程中的数据不错乱. django_se ...
- cookie与session简介 django操作cookie django操作session
目录 cookie与session简介 早期cookies 随机字符串解决cookies安全问题 禁止浏览器保存cookies django操作cookie set_cookie set_signed ...
- 网传的Spring大漏洞
昨天凌晨发了篇关于Spring大漏洞的推文,白天就有不少小伙伴问文章怎么删了. 主要是因为收到朋友提醒说可能发这个会违规(原因可参考:阿里云因发现Log4j2核弹级漏洞但未及时上报,被工信部处罚),所 ...
- IntelliJ IDEA项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved
IntelliJ IDEA项目导入时报错: The import javax.servlet.http.HttpServletRequest cannot be resolved 翻译一下错误信息是说 ...
- 【调试】sysRq按键使用方法
SysRq键简介 SysRq键是一个魔术案件,只要在内核没有完全卡死的情况下,内核都会相应SysRq 键的输入,使用这些组合键都可以搜集包括系统内存使用.CPU任务处理.进程运行状态等系统运行信息. ...