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 相关文章推荐
jquery插件tooltipv顶部淡入淡出效果使用示例
Dec 05 Javascript
JavaScript获取XML数据附示例截图
Mar 05 Javascript
基于jQuery实现二级下拉菜单效果
Feb 01 Javascript
浅谈Javascript数组(推荐)
May 17 Javascript
判断数组的最佳方法(推荐)
Oct 11 Javascript
Javascript vue.js表格分页,ajax异步加载数据
Oct 24 Javascript
js匿名函数使用&amp;传参(实例)
Sep 08 Javascript
基于rollup的组件库打包体积优化小结
Jun 18 Javascript
JavaScript设计模式之观察者模式实例详解
Jan 16 Javascript
Vue SPA 初次进入加载动画实现代码
Nov 14 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 Javascript
vue ant design 封装弹窗表单的使用
Jun 01 Vue.js
基于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 flock 文件锁详细介绍
2012/12/29 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
分享php邮件管理器源码
2016/01/06 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
优化javascript的执行速度
2010/01/23 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
js将字符串转成正则表达式的实现方法
2013/11/13 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
2015/08/06 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
react基本安装与测试示例
2020/04/27 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
Python是编译运行的验证方法
2015/01/30 Python
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
python开发之函数定义实例分析
2015/11/12 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
python去掉空白行的多种实现代码
2018/03/19 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
2019/01/04 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
世界汽车零件:World Car Parts
2019/09/04 全球购物
拔河比赛口号
2014/06/10 职场文书
手机销售员岗位职责
2015/04/11 职场文书
运动会开幕式主持词
2015/07/01 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书
Android实现图片九宫格
2022/06/28 Java/Android