当前位置:   article > 正文

Vue3选项式和组合式生命周期说明

Vue3选项式和组合式生命周期说明

生命周期:composition模式

生命周期先后顺序为:

setup -beforeCreate和created的统称,只在composition里面取消这两个,可以在这里进行数据请求

onBeforeMount-挂载前,可以请求后台数据

onMounted-挂载,可以获取DOM实例

onBeforeUpdate-更新前,可以在此更改数据

onUpdated-更新,可以获取到更新后的实例,避免在此期间更改数据,因为这可能会导致无限循环的更新

onBeforeUnmount-卸载组件实例之前,在这里可以清除定时器、监听之类的函数

onUnmounted-卸载组件实例之后,这个时候只剩下了 DOM 空壳。组件已被拆解,数据绑定被卸除,监听被移出,子实例也统统被销毁。

onErrorCaptured-捕获组件中发生的错误:组件渲染、事件处理器、生命周期钩子、 setup() 函数、侦听器、自定义指令钩子、过渡钩子

  1. <template>
  2.  <div ref="el" class="home">{{ title }}</div>
  3.  <el-button @click="updateSize">改变</el-button>
  4. </template>
  5. <script setup>
  6. import { onBeforeMount, onBeforeUnmount, onBeforeUpdate, onErrorCaptured, onMounted, onUnmounted, onUpdated, ref } from 'vue';
  7. // 生命周期钩子
  8. const el = ref()
  9. const title = ref('生命周期钩子的使用')
  10. const colors = ['#FF66FF', '#FF0033', '#66CCCC', '#990066', '#00CC00']
  11. // 注册一个回调函数,在组件挂载完成后执行
  12. let intervalId
  13. // 注册一个钩子,在组件被挂载之前被调用。
  14. // 当这个钩子被调用时,组件已经完成了其响应式状态的设置,但还没有创建 DOM 节点。它即将首次执行 DOM 渲染过程。
  15. onBeforeMount(() => {
  16.  console.log('onBeforeMount')
  17.  title.value = '注册一个钩子'
  18. })
  19. onMounted(() => {
  20.  console.log('onMounted')
  21.  el.value.style.fontSize = '20px'
  22.  intervalId = setInterval(() => {
  23.    console.log('测试')
  24. }, 1000)
  25. })
  26. // 注册一个钩子,在组件实例被卸载之前调用。
  27. onBeforeUnmount(() => {
  28.  console.log('onBeforeUnmount')
  29. })
  30. // 注册一个回调函数,在组件实例被卸载之后调用
  31. onUnmounted(() => {
  32.  console.log('onUnmounted')
  33.  clearInterval(intervalId)
  34. })
  35. // 注册一个回调函数,在组件因为响应式状态变更而更新其 DOM 树之后调用
  36. onUpdated(() => {
  37.  console.log('点击了');
  38.  console.log('onUpdated')
  39.  const nowNum = parseInt(Math.random() * 5)
  40.  // console.log('colors[nowNum]', colors[nowNum])
  41.  el.value.style.color = colors[nowNum]
  42. })
  43. // 注册一个钩子,在组件即将因为响应式状态变更而更新其 DOM 树之前调用
  44. // 这个钩子可以用来在 Vue 更新 DOM 之前访问 DOM 状态。在这个钩子中更改状态也是安全的
  45. onBeforeUpdate(() => {
  46.  console.log('onBeforeUpdate')
  47.  title.value = '哈哈哈'
  48. })
  49. // 注册一个钩子,在捕获了后代组件传递的错误时调用。
  50. /**
  51. * 错误可以从以下几个来源中捕获:
  52. 组件渲染
  53. 事件处理器
  54. 生命周期钩子
  55. setup() 函数
  56. 侦听器
  57. 自定义指令钩子
  58. 过渡钩子
  59. 这个钩子带有三个实参:错误对象、触发该错误的组件实例,以及一个说明错误来源类型的信息字符串。
  60. */
  61. onErrorCaptured((obj, component, msg) => {
  62.  console.log('onErrorCaptured', obj, component, msg)
  63. })
  64. const updateSize = () => {
  65.  // console.log(``)
  66.  const num =parseInt(Math.random() * 100)
  67.  title.value = `生命周期钩子的使用-${num}`
  68. }
  69. </script>
  70. <style lang="scss" scoped>
  71. </style>
生命周期:options模式

生命周期先后顺序为:

setup -beforeCreate和created的统称,只在composition里面取消这两个,可以在这里进行数据请求

beforeCreate-创建实例后的第一个钩子,在这里data、watch、computed等都不可用

created-完成数据观测,可以在这里请求数据,data、watch、computed等都可用

beforeMount-挂载前,可以请求后台数据

mounted-挂载,可以获取DOM实例

beforeUpdate-更新前,可以在此更改数据

updated-更新,可以获取到更新后的实例,避免在此期间更改数据,因为这可能会导致无限循环的更新

beforeUnmount-卸载组件实例之前,在这里可以清除定时器、监听之类的函数

unmounted-卸载组件实例之后,这个时候只剩下了 DOM 空壳。组件已被拆解,数据绑定被卸除,监听被移出,子实例也统统被销毁。

  1. <template>
  2.  <div>
  3.   options
  4.  </div>
  5. </template>
  6. <script>
  7. export default {
  8.  setup () {
  9.    console.log('setup');
  10.    return {}
  11. },
  12.  beforeCreate() {
  13.    console.log('beforeCreate');
  14. },
  15.  created() {
  16.    console.log('created');
  17. },
  18.  beforeMount() {
  19.    console.log('beforeMount');
  20. },
  21.  mounted() {
  22.    console.log('mounted');
  23. },
  24.  beforeUpdate() {
  25.    console.log('beforeUpdate');
  26. },
  27.  updated() {
  28.    console.log('updated');
  29. },
  30.  beforeUnmount() {
  31.    console.log('beforeUnmount');
  32. },
  33.  unmounted() {
  34.    console.log('unmounted');
  35. },
  36. }
  37. </script>
  38. <style lang="scss" scoped>
  39. </style>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/589565
推荐阅读
相关标签
  

闽ICP备14008679号