Vue.js实例方法之生命周期详解


Posted in Javascript onJuly 03, 2017

本文主要给大家介绍的是关于Vue.js实例方法之生命周期的相关内容,分享出来供大家参考学习,学习的朋友们下面来一起看看详细的介绍:

一、$mount()挂载方法

$mount是用来挂载扩张的。如果 Vue 实例在实例化时没有收到 el 选项,则它处于“未挂载”状态,没有关联的 DOM 元素。可以使用 vm.$mount() 手动地挂载一个未挂载的实例。

比如我们扩张了一个全局组件,通过$mount手动的挂载到DOM上,也就生成了一个Vue实例。

<div id="#app"></div>

扩张一个全局组件,并且挂载到DOM上。

//扩张全局的组件
var navBar = Vue.extend({
 template: `<div>{{ title }}</div>`,
 data(){
 return {
  title: 'Vue 扩展的全局组件'
 }
 },
 mounted(){
 console.log('挂载上了')
 }
})

//使用全局扩张的组件,挂载到id为#app的DOM上(会替换#app)
var vm = new navBar().$mount('#app');

//或者
var vm = new navBar({el: "#app"})

如果没有提供 elementOrSelector 参数,模板将被渲染为文档之外的的元素,并且必须使用原生DOM API把它插入文档中。

//在文档之外渲染,并且挂载
var navbar = new navBar().$mount()
document.getElementById('app').appendChild(navbar.$el)

二、$destroy()销毁方法

作用: 完全销毁一个实例。

Vue 实例销毁后调用。调用后,Vue 实例相关的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

<div id="app">

</div>
<button onclick="destroy()">销毁</button>

在组件中挂载destroyed生命周期钩子

var navBar = Vue.extend({
 template: `<div>
   <div>{{ title }}</div>
   <h2>{{ num }}</h2>
   <button @click = 'add'>add</button>
  </div>`,
 data(){
 return {
  title: 'Vue 全局扩展组件',
  num: 10
 }
 }
 destroyed(){
 console.log('销毁了')
 },
 methods: {
 add(){
  this.num++
 }
 }
})

//使用全局扩张的组件,挂载到id为#app的元素上
var vm = new navBar().$mount('#app');

//销毁
function destroy(){
 //点击按钮,销毁vm实例,控制台会输出‘销毁了',当再次点击的时候不会输出,而且点击add按钮,数量也不会改变,说明已经销毁了
 vm.$destroy()
}

Vue.js实例方法之生命周期详解

三、$forceUpdate()更新方法

该方法是迫使Vue实例重新渲染。注意:它仅仅影响实例本身和插入插槽内容的子组件,而不是所有子组件。

看代码:

<button onclick="reload()">刷新</button>
//同样的,为了看到是否重新更新了数据,即是否执行了reload方法,我们在实例中添加updated选项
updated(){
 console.log('数据重新渲染了')
}

//三、更新数据方法
function reload(){
 vm.$forceUpdate()
}

点击更新按钮,控制台打印出updated钩子中的输出,说明Vue实例重新渲染了。

Vue.js实例方法之生命周期详解

四、$nextTick()数据修改方法

参数: {Function} [callback]

该方法是构造器data中的数据被修改后触发,相当于updated钩子函数,但还是有区别的:它是在updated钩子函数执行完之后执行其里边的回调函数。也就是将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新。

methods: {
 add(){
  //更改数据
  this.num++
  this.$nextTick(function(){
   console.log('DOM现在更新了')
  })
 }
},
updated(){
 console.log('数据更新成:'+this.num)
}

Vue.js实例方法之生命周期详解

通过控制台的打印结果,可以看到,当数据改变时,updated钩子早于$nextTick中的回调。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JavaScript 学习笔记二 字符串拼接
Mar 28 Javascript
基于jquery的cookie的用法
Jan 10 Javascript
基于jquery的合并table相同单元格的插件(精简版)
Apr 05 Javascript
js统计页面的来访次数实现代码
May 09 Javascript
JQuery CheckBox(复选框)操作方法汇总
Apr 15 Javascript
基于 Node.js 实现前后端分离
Apr 23 Javascript
js实现上传文件添加和删除文件选择框
Oct 24 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
Jan 22 Javascript
jQuery图片轮播功能实例代码
Jan 29 Javascript
vue父组件中获取子组件中的数据(实例讲解)
Sep 27 Javascript
通过js控制时间,一秒一秒自己动的实例
Oct 25 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
Dec 26 Javascript
基于Vuejs和Element的注册插件的编写方法
Jul 03 #Javascript
Async Validator 异步验证使用说明
Jul 03 #Javascript
在vue-cli脚手架中配置一个vue-router前端路由
Jul 03 #Javascript
Require.js的基本用法详解
Jul 03 #Javascript
React利用插件和不用插件实现双向绑定的方法详解
Jul 03 #Javascript
解决webpack -p压缩打包react报语法错误的方法
Jul 03 #Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
Jul 03 #Javascript
You might like
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
详解vue-property-decorator使用手册
2019/07/29 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
详解Python的Django框架中的模版继承
2015/07/16 Python
python开发利器之ulipad的使用实践
2017/03/16 Python
Python制作Windows系统服务
2017/03/25 Python
利用python如何处理nc数据详解
2018/05/23 Python
python3实现多线程聊天室
2018/12/12 Python
django的ORM模型的实现原理
2019/03/04 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
python高级特性简介
2020/08/13 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
开水果连锁店创业计划书
2013/12/29 职场文书
销售心得体会
2014/01/02 职场文书
电子商务求职信
2014/06/15 职场文书
2014年工商所工作总结
2014/12/09 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL
Python中三种花式打印的示例详解
2022/03/19 Python
Rust中的Struct使用示例详解
2022/08/14 Javascript