vue容易混淆的点小记
computed、methods及watch函数的差异
computed:基于依赖进行缓存,若依赖不变,则直接调用缓存(适用于性能开销比较大的时候)
methods: 不管数据是否变更,都会进行计算(适用于不需要缓存的时候)
watch: 跟computed有异曲同工之妙,不同的是,其可以设置中间状态(适用于当数据发生变化时执行异步或者开销较大的操作)
数组更新检测
由于js限制,Vue不能检测一下变动的数组:
1.通过索引直接设置一个项,如:vm.items[index] = newValue;
解决方法一:Vue.set(vm.items, index, newValue);
解决方法二:vm.$set(vm.items, index, newValue); 【vm.$set实例方法是全局方法Vue.set的别名】
解决方法三:vm.items.splice(index, 1, newValue);
2.修改数组长度,如:vm.items.length = newLen;
解决方法:vm.items.splice(newLen);
对象更新检测
同样由于js限制,Vue不能检测对象属性的添加或删除
如:var vm = new Vue({
data: {
userInfo: {
name: '淼淼'
}
}
})
vm.userInfo.age = 26 // 非响应式,故添加无效
//解决方法一
Vue.set(vm.userInfo, 'age', 26)
//解决方法二
vm.$set(vm.userInfo, 'gender', 'female')
// 添加属性对象
vm.userInfo = Object.assign({}, vm.userInfo, {
'addr': '成都',
'hobby': '阅读'
})
vue容易混淆的点小记的更多相关文章
- Vue nextTick 机制
背景 我们先来看一段Vue的执行代码: export default { data () { return { msg: 0 } }, mounted () { this.msg = 1 this.m ...
- 从源码看 Vue 中的 Mixin
最近在做项目的时候碰到了一个奇怪的问题,通过 Vue.mixin 方法注入到 Vue 实例的一个方法不起作用了,后来经过仔细排查发现这个实例自己实现了一个同名方法,导致了 Vue.mixin 注入方法 ...
- scrapy学习之爬虫练习平台35
前言 上一篇文章中爬取了爬虫练习平台的所有 ssr 网站,都是比较简单的,没有反爬措施,这次来爬一下后面的 spa 系列. 环境准备 这里沿用了上篇文章的环境和设置,就不重新搭建环境了. 开始爬取 s ...
- scrapy学习之爬虫练习平台22
前言 上一篇文章中爬取了爬虫练习平台的所有 ssr 网站,都是比较简单的,没有反爬措施,这次来爬一下后面的 spa 系列. 环境准备 这里沿用了上篇文章的环境和设置,就不重新搭建环境了. 开始爬取 s ...
- vue项目配置 `webpack-obfuscator` 进行代码加密混淆
背景 公司代码提供给第三方使用,为了不完全泄露源码,需要对给出的代码进行加密混淆,前端代码虽然无法做到完全加密混淆,但是通过使用 webpack-obfuscator 通过增加随机废代码段.字符编码转 ...
- <tangmuchw>之新手vue项目小记--新建.vue文件,运行项目,出现error:This dependency was not found...
错误码: This dependency was not found: * !!vue-style-loader!css-loader?{"minimize":false,&quo ...
- vue 学习小记
vue 中有 data() .computed.methods.beforeRouteLeave.created等 具体的: data():定义一些文件中需要用到的变量,data中带return,是使 ...
- vue通过extend动态创建全局组件(插件)学习小记
测试环境:nodejs+webpack,例子是看文章的,注释为自己的理解 创建一个toast.vue文件: <template> <div class="wrap" ...
- vue: 代码小记
1.事件派发:子控件->父控件 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
随机推荐
- MongoDB修改与聚合二
1.修改方法 一 语法 里面有三个大的语句:一个是查询条件:一个是修改字段:一个是其他参数(目前就有两个) db.table.update( 条件, 修改字段, 其他参数 ) update db1.t ...
- BZOJ1041:[HAOI2008]圆上的整点(数论)
Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...
- ansible-role写法
一.role目录的创建: cd /etc/ansible/ mkdir -pv roles/{websrvs,dbsrvs}/{tasks,files,templates,meta,handlers, ...
- HDU - 5078 水题
题意:最大困难=距离 / 相邻时间 #include<cstring> #include<cstdio> #include<cmath> #define ll do ...
- 离线安装Cloudera Manager 5和CDH5(最新版5.9.3) 完全教程(五)数据库安装(双节点)
一.方案选择 通过Lvs+keepalived+mysql(主主同步)实现数据库层面的高可用方案,需要两台服务器作为数据库提供业务数据的存储,应用服务器通过vip访问数据库,允许同一时间内一台数据库服 ...
- MetaMask/json-rpc-middleware-stream
https://github.com/MetaMask/json-rpc-middleware-stream/blob/master/test/index.js#L20 A small toolset ...
- oracle创建em
语法:emca -config dbcontrol db [-repos (create | recreate)] [-cluster] [-silent] [-backup] [parameters ...
- nested exception is org.apache.ibatis.reflection.ReflectionExceptio
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Reflecti ...
- Qt+QGIS二次开发:QGIS中使用QgsRubberBand类创建临时图形
1 概述 临时图形Rubberband主要用于高亮显示.交互绘制等情况下.2 原理 临时图形是在一个底色透明的图层(顶层)上,添加已有的几何元素或者创建一个几何元素(临时图形),可以设置相应的样式, ...
- CF932F Escape Through Leaf 斜率优化、启发式合并
传送门 \(DP\) 设\(f_i\)表示第\(i\)个节点的答案,\(S_i\)表示\(i\)的子节点集合,那么转移方程为\(f_i = \min\limits_{j \in S_i} \{a_i ...