Vue.js生命周期挂钩

时间:2019-09-13 15:20:55

标签: vue.js vuejs2 vue-component nuxt.js

我确定Vue中的生命周期挂钩为8(beforeCreate,create,beforeMount,mount,beforeUpdate,update,beforeDestroy,destroy),但今天我发现(https://vuejs.org/v2/api/#activated)还有3个: / p>

已激活

已停用

已捕获错误

有人可以解释这三个工作原理吗?可以用console.log测试它们吗? (只是了解何时调用它们)

2 个答案:

答案 0 :(得分:2)

首先,介绍一下上下文:

在Vue 2.0+中,有一个名为<keep-alive>的内置组件,该组件将子元素放入其中并作为缓存的组件将其保持在内存中。通常,如果Vue的属性发生变化,Vue会重用该组件,但是该组件可能非常复杂且更新缓慢。您可以用<keep-alive>包装它,然后该组件将被缓存以提供给它的道具。

更新<keep-alive>中的组件时,将调用activated生命周期挂钩。将该组件缓存并放在一边时,将调用deactivated生命周期挂钩。

errorCaptured生命周期挂钩是在Vue 2.5.0中添加的,只要后代组件捕获到错误,就会调用该挂钩。因此,如果您有一个名为A的组件,该组件有一个称为B的子组件,并且有一个名为C的子组件,那么如果C捕获并出错,则errorCaptured生命周期挂钩将同时在A和B。

这些钩子的工作方式与其他任何钩子相同,因此以相同的方式使用它们。

export default {
    data() {
      return {}
    },
    mounted() {
      console.log('mounted hook called')
    },
    errorCaptured(err, vm, info) {
      console.log('error captured in component', vm)
      console.error(err)
      console.log('error info:', info)
    },
    activated() {
      console.log('cached component is being used again')
    },
    deactivated() {
      console.log('component is being kept alive in cache for now')
    }
}

答案 1 :(得分:1)

我知道这个答案已经来不及了,但有人可能也在寻找答案 问题。默认情况下,Vue.js禁用了console.log功能,因此我们必须启用它。

只需将SELECT DISTINCT SQL_CALC_FOUND_ROWS wp_users.* FROM wp_users LEFT JOIN wp_usermeta ON (wp_users.ID = wp_usermeta.user_id AND wp_usermeta.meta_key = 'ur_user_status' ) LEFT JOIN wp_usermeta AS mt1 ON ( wp_users.ID = mt1.user_id ) LEFT JOIN wp_usermeta AS mt2 ON ( wp_users.ID = mt2.user_id ) WHERE 1=1 AND ( ( ( wp_usermeta.user_id IS NULL OR ( mt1.meta_key = 'ur_user_status' AND mt1.meta_value = '1' ) ) AND ( mt2.meta_key = 'wp_3_capabilities' ) ) ) ORDER BY user_login AS 放在package.json上

欢呼