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 相关文章推荐
Some tips of wmi scripting in jscript (1)
Apr 03 Javascript
JS正则中的RegExp对象对象
Nov 07 Javascript
表头固定(利用jquery实现原理介绍)
Nov 08 Javascript
IE下JS读取xml文件示例代码
Aug 05 Javascript
javaScript如何跳出多重循环break、continue
Sep 01 Javascript
获取select的value、text值的简单示例(jquery与javascript)
Dec 07 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
Feb 08 Javascript
Vue响应式原理详解
Apr 18 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
Aug 25 Javascript
JavaScript工具库之Lodash详解
Jun 15 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
Dec 09 Javascript
js实现随机点名器精简版
Jun 29 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
全国FM电台频率大全 - 17 湖北省
2020/03/11 无线电
php自动给网址加上链接的方法
2015/06/02 PHP
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
2018/11/28 Javascript
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
python文件写入实例分析
2015/04/08 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
详解HTML5新增标签
2017/11/27 HTML / CSS
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
Servlet面试题库
2015/07/18 面试题
人事行政专员岗位职责
2014/07/23 职场文书
2015年司法所工作总结
2015/04/27 职场文书
2016年大学生社会实践心得体会
2015/10/09 职场文书