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 相关文章推荐
新浪刚打开页面出来的全屏广告代码
Apr 02 Javascript
技术男用来对妹子表白的百度首页
Jul 23 Javascript
javascript实现回车键提交表单方法总结
Jan 10 Javascript
浅谈JavaScript中null和undefined
Jul 09 Javascript
jQuery 跨域访问解决原理案例详解
Jul 09 Javascript
jquery实现左右滑动式轮播图
Mar 02 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
Jul 12 Javascript
Puppeteer 爬取动态生成的网页实战
Nov 14 Javascript
vue2中引用及使用 better-scroll的方法详解
Nov 15 Javascript
自定义javascript验证框架示例【附源码下载】
May 31 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
Aug 01 Javascript
js原生map实现的方法总结
Jan 19 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 VS ASP
2006/10/09 PHP
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
jQuery无缝轮播图代码
2016/12/22 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
jquery.pagination.js分页使用教程
2018/10/23 jQuery
vue中使用codemirror的实例详解
2018/11/01 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
在Python的Flask框架中实现单元测试的教程
2015/04/20 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
python之django母板页面的使用
2018/07/03 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
比利时家具购买网站:Home24
2019/01/03 全球购物
VC++笔试题
2014/10/13 面试题
四风问题个人对照检查材料
2014/09/26 职场文书
教学质量月活动总结
2015/05/11 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书