Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vue - 生命周期钩子 #35

Open
plh97 opened this issue Apr 25, 2018 · 0 comments
Open

vue - 生命周期钩子 #35

plh97 opened this issue Apr 25, 2018 · 0 comments
Assignees
Labels
vue vue.js 框架 博客 写一些前端技术记录 学习 如果不学习,那今天和昨天又有什么区别 框架 学习一些库的源码

Comments

@plh97
Copy link
Owner

plh97 commented Apr 25, 2018

前言

单个vue组件都有自己的生命周期,包括不限于组件的创建(created),mounted挂载,更新updated,destroyed销毁,完全了解组件有助于进行vue的进一步学习。组件是vue框架的基石。

书写vue组件的生命周期钩子的时候经常有的疑问,我到底应该写简便的箭头函数,还是写function这种,由于无法指定vue实例本身,this孕育而出,默认this执行vue实例,但是问题是箭头函数和普通函数不一样,换句话说,箭头函数根本没有自己的构造器?(还是说他没有自己的this?我忘了),所以箭头函数内部this全部指向函数本身,这和vue核心思想是相悖论的。

created: () => console.log(this)   // Uncaught TypeError: Cannot read property of undefined

完整生命周期示意图

这个没啥好说的
image

大致流程

  • beforeCreate : 创建之前
  • created :创建完成
  • beforeMount : 挂载之前
  • mounted :挂在之后
  • beforeUpdate :更新之前 只有在虚拟dom重新渲染时候才触发
  • updated : 更新完成 只有在虚拟dom重新渲染时候才触发
  • beforeDestory:销毁之前
  • destory:销毁之前
<template>
  <div class="nav-bar">
    {{test}}
    <input type="text" v-model="test">
  </div>
</template>
<script>
export default {
  data(){
    return {
      test: 'ttt',
    }
  },
  beforeCreate(){
    console.log('beforeCreate');
  },
  created(){
    console.log('created');
  },
  beforeMount (){
    console.log('beforeMount ');
  },
  mounted (){
    console.log('mounted ');
  },
  beforeUpdate (e){
    console.log('beforeUpdate ',e);
  },
  updated (e){
    console.log('updated ',e);
  },
  beforeDestory (){
    console.log('beforeDestory ');
  },
  destory (){
    console.log('destory ');
  },
}
</script>

只有当你键入字符的时候触beforeUpdate updated
image

@plh97 plh97 added 学习 如果不学习,那今天和昨天又有什么区别 博客 写一些前端技术记录 框架 学习一些库的源码 vue vue.js 框架 labels Apr 25, 2018
@plh97 plh97 self-assigned this Apr 25, 2018
@plh97 plh97 mentioned this issue Apr 26, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
vue vue.js 框架 博客 写一些前端技术记录 学习 如果不学习,那今天和昨天又有什么区别 框架 学习一些库的源码
Projects
None yet
Development

No branches or pull requests

1 participant