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的返回顶部效果(兼容IE6)
Jan 17 Javascript
JavaScript对象之间的转换 jQuery对象和原声DOM
Mar 07 Javascript
JQuery对表格进行操作的常用技巧总结
Apr 23 Javascript
JQuery中serialize()用法实例分析
Feb 06 Javascript
Javascript之String对象详解
Jun 08 Javascript
jQuery获取剪贴板内容的方法
Jun 16 Javascript
原生JS实现简单放大镜效果
Feb 08 Javascript
React Native中的RefreshContorl下拉刷新使用
Oct 09 Javascript
Scala解析Json字符串的实例详解
Oct 11 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
Dec 06 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
Oct 29 Javascript
微信小程序实现页面左右滑动
Nov 16 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
ajax实现无刷新分页(php)
2010/07/18 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
PHP中的reflection反射机制测试例子
2014/08/05 PHP
PHP封装cURL工具类与应用示例
2019/07/01 PHP
PHP实现简单日历类编写
2020/08/28 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
js树形控件脚本代码
2008/07/24 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
js与jQuery 获取父窗、子窗的iframe
2013/12/20 Javascript
基于jQuery创建鼠标悬停效果的方法
2015/03/07 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
layui button 按钮弹出提示窗口,确定才进行的方法
2019/09/06 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
Python实现的简单万年历例子分享
2014/04/25 Python
Python程序设计入门(2)变量类型简介
2014/06/16 Python
python中partial()基础用法说明
2018/12/30 Python
对Python Pexpect 模块的使用说明详解
2019/02/14 Python
基于python操作ES实例详解
2019/11/16 Python
python实现拼图小游戏
2020/02/22 Python
python 连续不等式语法糖实例
2020/04/15 Python
pycharm 实现光标快速移动到括号外或行尾的操作
2021/02/05 Python
英国工具中心:UK Tool Centre
2017/07/10 全球购物
高中军训感言500字
2014/02/24 职场文书
新手上路标语
2014/06/20 职场文书
村级个人对照检查材料
2014/08/22 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
入党政审材料范文
2014/12/24 职场文书
2015年小学总务工作总结
2015/07/21 职场文书