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 题型问答有答案参考
Feb 17 Javascript
javascript处理table表格的代码
Dec 06 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
Mar 09 Javascript
jquery实现textarea 高度自适应
Mar 11 Javascript
js实现当前输入框高亮显示的方法
Aug 19 Javascript
AngularJS 面试题集锦
Sep 06 Javascript
jQuery实现页面顶部下拉广告
Dec 30 Javascript
jQuery实现最简单实用的分秒倒计时
Feb 05 Javascript
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
详解Node使用Puppeteer完成一次复杂的爬虫
Apr 18 Javascript
微信小程序返回箭头跳转到指定页面实例解析
Oct 08 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
Aug 31 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
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
PHP编程风格规范分享
2014/01/15 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
Koa从零搭建到Api实现项目的搭建方法
2019/07/30 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
JS this关键字在ajax中使用出现问题解决方案
2020/07/17 Javascript
修改Vue打包后的默认文件名操作
2020/08/12 Javascript
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
教你用Python写安卓游戏外挂
2018/01/11 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
2018/04/02 Python
python 生成图形验证码的方法示例
2018/11/11 Python
python集合常见运算案例解析
2019/10/17 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
python基于opencv 实现图像时钟
2021/01/04 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
DataReader和DataSet的异同
2014/12/31 面试题
大学四年的个人自我评价
2014/01/14 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
学校运动会开幕词
2016/03/03 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript