一、父子组件生命周期

父组件create->子组件create->子组件mounted->父组件mounted

当一个钩子函数使用了异步请求时,并不会等该钩子函数中所有异步的回调都执行完了再执行后面的生命周期函数。

二、响应式数据

所谓响应式数据就是当数据发生变化时会更新引用该数据的dom、会使computed属性重新生成值,会被watch方法监听到;

Vue判断数据是否变化的方法很简单,值类型直接用===来比较是否相同,引用类型则比较地址;

Vue 将会递归将 data 中的属性转换为 getter/setter,从而让 data 的属性能够响应数据变化;

当把data中某个对象或数组类型的属性整体替换时,该属性的所有成员依然是响应式的

var vm = new Vue({
data:{
obj:{id:1}
}
})
vm.obj={name:'replace',id:'3'} //obj被整个替换了,但还是响应式的,里面的name和id也是响应式的

Vue 不能检测对象属性的添加或删除:

vm.obj.dynamicAdd="动态添加的属性" //dynamicAdd是后续动态添加的属性,如果想变成响应式的则需要用vm.set()

数组元素注意事项:

能侦测到数组变化的操作方法有:push()、pop()、shift()、unshift()、splice()、sort()、reverse()

由于 JavaScript 的限制,Vue 不能检测以下数组的变动:

  • 当你利用索引直接设置一个数组项时,例如:vm.items[indexOfItem] = newValue
  • 当你修改数组的长度时,例如:vm.items.length = newLength
var vm = new Vue({
data: {
items: ['a', 'b', 'c']
}
})
vm.items[1] = 'x' // 不是响应性的
vm.items.length = 2 // 不是响应性的

对于第一个问题的解决方案使用以下两种方法中的任意一种即可:

vm.items.splice(1, 1, 'newb');//相当于是替换
vm.$set(vm.items, 1, 'newB')

对于第二个问题的解决方案如下:

vm.items.splice(newLength) //newLength如果超出了数组的长度,则从数组末尾开始添加内容

vue应用难点总结的更多相关文章

  1. Vue 相关难点汇总

    1. 父子组件的双向数据绑定,所以在子组件是不允许修改父组件的属性的. // 解决办法 // 在子组件data中定义一个父组件传递过来的副本,再把该副本利用this.$emit("" ...

  2. vue实用难点讲解

    此篇文章是我基于研究vue文档三遍的基础上,觉得还有点难理解或者难记的知识点总结 列表渲染 1.渲染组件必须加key,并且属性是手动传递给组件的 <my-component v-for=&quo ...

  3. Vue 2 难点汇总

    数据侦听 Vue.$watch   watch提供了观察和响应实例上数据变动的办法,当有一些数据需要跟随其他数据变化而变化时,如子组件某个数据依赖来自于父组件的prop计算.很直观的会想到计算这功能和 ...

  4. vue 2.0 路由切换以及组件缓存源代码重点难点分析

    摘要 关于vue 2.0源代码分析,已经有不少文档分析功能代码段比如watcher,history,vnode等,但没有一个是分析重点难点的,没有一个是分析大命题的,比如执行router.push之后 ...

  5. Vue.js 2使用中的难点举例--子组件,slot, 动态组件,事件监听

    一例打尽..:) <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

  6. vue开大主要难点解决方式

    问题:在我们那vue开发项目时,多层嵌套组件最繁琐,组件传参成最难的问题,并且对兄弟组件传参也无能为力,也会导致代码很难维护. 解决:采用vuex状态管理,把所有的事件和状态都储存在store对象中, ...

  7. Vue.js:轻量高效的前端组件化方案(转载)

    摘要:Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在GitHub上已经有5000+的star.本文将从各方面对Vue ...

  8. vue实现ajax滚动下拉加载,同时具有loading效果

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  9. vue实现图书管理demo

    年后公司的项目要求用到vue.js知识,我angular没有学,node.js和react也只是了解了一点点,所以学起来比较困难.如果你想学vue.js的知识,推荐网址:http://vuejs.or ...

随机推荐

  1. vue 中使用阿里iconfont彩色图标

    在main.js中 import './assets/images/iconfont/iconfont.css'import './assets/images/iconfont/iconfont.js ...

  2. spring-JDBC模板

    Spring的JDBC的模板 Spring是EE开发的一站式的框架,有EE开发的每层的解决方案. Spring对持久层也提供了解决方案:ORM模块和JDBC的模板. Spring提供了很多的模板用于简 ...

  3. qtcreator 添加 cppreference 离线文档

    https://en.cppreference.com/w/File:qch_book_20190607.zip 下载后放到 D:\Qt\Qt5.10.0\Docs\Qt-5.10.0目录下, 并在q ...

  4. 《精通CSS第3版》(5)漂亮的盒子

  5. JS执行——Promise

    https://www.jianshu.com/p/b16e7c9e1f9f Promise Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理且更强大.它最早由社 ...

  6. 数据库事务和spring事务的区别

    数据库事务和spring事务 本质上其实是同一个概念,spring的事务是对数据库的事务的封装,最后本质的实现还是在数据库,假如数据库不支持事务的话,spring的事务是没有作用的.数据库的事务说简单 ...

  7. EasyNVR网页Chrome无插件播放摄像机视频功能二次开发之云台控制接口示例代码

    随着多媒体技术和网络通信技术的迅速发展,视频监控技术在电力系统.电信行业.工业监控.工地.城市交通.水利系统.社区安防等领域得到越来越广泛的应用.摄像头直播视频监控通过网络直接连接,可达到的世界任何角 ...

  8. Android Tcp操作

    Tcp是基于传输层的面向连接的可靠通讯协议,其优点是基于连接,使得服务端和客户端可以实现双向通信,且实时性高,在需要服务端主动向客户端推送数据的应用场景中,使用TCP协议是一种很好的方式. 初学And ...

  9. IP address '121.41.35.30' could not be resolved: Name or service not known解决方法

    IP address '121.41.35.30' could not be resolved: Name or service not known解决方法 添加如下 然后重启 即可解决<pre ...

  10. [转帖]Chrome用户请尽快更新:谷歌发现两个严重的零日漏洞

    Chrome用户请尽快更新:谷歌发现两个严重的零日漏洞 https://news.cnblogs.com/n/647075/ 强烈建议:Chrome 用户请尽快升级浏览器!在谷歌今天发布的紧急补丁程序 ...