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容易混淆的点小记的更多相关文章

  1. Vue nextTick 机制

    背景 我们先来看一段Vue的执行代码: export default { data () { return { msg: 0 } }, mounted () { this.msg = 1 this.m ...

  2. 从源码看 Vue 中的 Mixin

    最近在做项目的时候碰到了一个奇怪的问题,通过 Vue.mixin 方法注入到 Vue 实例的一个方法不起作用了,后来经过仔细排查发现这个实例自己实现了一个同名方法,导致了 Vue.mixin 注入方法 ...

  3. scrapy学习之爬虫练习平台35

    前言 上一篇文章中爬取了爬虫练习平台的所有 ssr 网站,都是比较简单的,没有反爬措施,这次来爬一下后面的 spa 系列. 环境准备 这里沿用了上篇文章的环境和设置,就不重新搭建环境了. 开始爬取 s ...

  4. scrapy学习之爬虫练习平台22

    前言 上一篇文章中爬取了爬虫练习平台的所有 ssr 网站,都是比较简单的,没有反爬措施,这次来爬一下后面的 spa 系列. 环境准备 这里沿用了上篇文章的环境和设置,就不重新搭建环境了. 开始爬取 s ...

  5. vue项目配置 `webpack-obfuscator` 进行代码加密混淆

    背景 公司代码提供给第三方使用,为了不完全泄露源码,需要对给出的代码进行加密混淆,前端代码虽然无法做到完全加密混淆,但是通过使用 webpack-obfuscator 通过增加随机废代码段.字符编码转 ...

  6. <tangmuchw>之新手vue项目小记--新建.vue文件,运行项目,出现error:This dependency was not found...

    错误码: This dependency was not found: * !!vue-style-loader!css-loader?{"minimize":false,&quo ...

  7. vue 学习小记

    vue 中有 data() .computed.methods.beforeRouteLeave.created等 具体的: data():定义一些文件中需要用到的变量,data中带return,是使 ...

  8. vue通过extend动态创建全局组件(插件)学习小记

    测试环境:nodejs+webpack,例子是看文章的,注释为自己的理解 创建一个toast.vue文件: <template> <div class="wrap" ...

  9. vue: 代码小记

    1.事件派发:子控件->父控件 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

随机推荐

  1. Java面试——微服务

    1.什么是微服务?    就目前而言,对于微服务业界并没有一个统一的,标准的定义. 但通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分一组小的服务,每个服务运行在其独立 ...

  2. Django 使用mysql 数据库流程

    创建一个mysql数据库 在settings中配置: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': ...

  3. WPFのImage控件souce引入的方法总结

    1.后台代码相对路径添加(若为绝对路径,换UriKind的属性即可) BitmapImage testBitmapImage = new BitmapImage(new Uri(@"\bin ...

  4. 【转】curl 命令行下载工具使用方法小结

    获取curl curl 命令行下载工具 curl的官方网站为: http://curl.haxx.se官方下载页面为:http://curl.haxx.se/download.html 你可能并不清楚 ...

  5. 周杰伦的2000w个故事

    http://m.v.qq.com/play/play.html?coverid=g0p1mhz5c52ogla&vid=g0025u7k36z&ptag=2_5.8.6.13321_ ...

  6. 为什么说Redis是单线程的以及Redis为什么这么快!(转)

    文章转自https://blog.csdn.net/chenyao1994/article/details/79491337 一.前言 近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到 ...

  7. 理解Express express.static 和 __direname 及 __firename的含义

    理解Express express.static 和 __direname 及 __firename的含义 一:理解 app.use(express.static(__direname + '/pub ...

  8. ESP WIFI

    esp_err_tesp_wifi_init(constwifi_init_config_t *config) 这个WIFI初始化函数是使用所有的WIFI API之前必须调用的函数: 函数的参数是一个 ...

  9. Android BaseAdapter加载多个不同的Item布局时出现UncaughtException in Thread main java.lang.ArrayIndexOutOfBoundsException: length=15; index=15

    java.lang.ArrayIndexOutOfBoundsException: length=15; index=15 异常出现的场景:在做聊天界面时,需要插入表情,图片,文字,名片,还有几种较为 ...

  10. 开发工具|给你的项目买份保险:Python虚拟环境

    读完需要 9 分钟 1. 什么是虚拟环境? 虚拟环境的意义,就如同 虚拟机 一样,它可以实现不同环境中Python依赖包相互独立,互不干扰.这在一定程度的意义上,给了我们的项目一份很有力的保障.在这里 ...