Vue js 的生命周期(看了就懂)(推荐)

Vue.js的生命周期

Vue.js 的生命周期是指从 Vue 实例创建、运行到销毁的整个过程,主要包括以下几个阶段:

  1. 创建阶段(Initialization):

    • beforeCreate:实例刚在内存中创建出来,但还未初始化 data、methods、computed、watcher 等属性和对象,因此无法访问 data、methods、computed、watcher 等属性和对象
    • created:完成了数据初始化,可以访问 data、methods、computed、watcher 等属性和对象
  2. 模板编译(Template Compilation):将模板编译为虚拟 DOM

    • beforeMount:虚拟 DOM 已经在内存中创建出来,但还未挂载到页面中的真实 DOM 上
    • mounted:虚拟 DOM 成功渲染到页面上,已经可以访问到渲染好的 HTML 结构,也可以通过 ref 获取挂载的元素,还可以进行 AJAX 请求和定时器等操作
  3. 节点更新(Node Updating):当数据改变时,重新渲染节点的过程

    • beforeUpdate:在数据更新之前触发,在这个阶段无法访问到更新后的数据,只能访问到更新前的数据
    • updated:在数据更新之后触发,需要注意的是不要在 updated 钩子中修改数据,否则会陷入死循环
  4. 卸载阶段(Destroy):Vue 实例销毁后,清理工作阶段

    • beforeDestroy:Vue 实例销毁之前会调用 beforeDestroy 钩子函数,可以在这个阶段进行一些清理工作
    • destroyed:Vue 实例已经销毁,无法再访问 Vue 实例的任何属性和方法,这个阶段可以进行一些解绑操作

示例说明1:利用生命周期钩子函数显示组件渲染的时间

<template>
  <div>
    <p>这是我的第一个组件</p>
    <p>{{ time }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      time: ""
    };
  },
  beforeCreate() {
    console.log("组件即将创建");
  },
  created() {
    console.log("组件已经创建");
    setInterval(() => {
      var date = new Date();
      var time = date.toLocaleTimeString();
      this.time = '当前时间:' + time;
    }, 1000);
  },
  beforeMount() {
    console.log("组件即将挂载");
  },
  mounted() {
    console.log("组件已经挂载");
  },
  beforeUpdate() {
    console.log("组件即将更新");
  },
  updated() {
    console.log("组件已经更新");
  },
  beforeDestroy() {
    console.log("组件即将销毁");
  },
  destroyed() {
    console.log("组件已经销毁");
  }
};
</script>

示例说明2:利用生命周期钩子函数获取数据和调用 AJAX 请求

<template>
  <div class="users">
    <ul>
      <li v-for="user in users" :key="user.id">{{ user.name }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      users: []
    };
  },
  beforeCreate() {
    console.log("组件即将创建");
  },
  created() {
    console.log("组件已经创建");
    axios.get("https://jsonplaceholder.typicode.com/users").then(response => {
      console.log(response.data);
      this.users = response.data;
    });
  },
  beforeMount() {
    console.log("组件即将挂载");
  },
  mounted() {
    console.log("组件已经挂载");
  },
  beforeUpdate() {
    console.log("组件即将更新");
  },
  updated() {
    console.log("组件已经更新");
  },
  beforeDestroy() {
    console.log("组件即将销毁");
  },
  destroyed() {
    console.log("组件已经销毁");
  }
};
</script>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue js 的生命周期(看了就懂)(推荐) - Python技术站

(0)
上一篇 2023年5月29日
下一篇 2023年5月29日

相关文章

  • Vue数据更新但页面没有更新的多种情况问题及解决

    问题描述: 在使用Vue时,我们发现有些时候,数据更新了,但页面并没有及时更新,这是一个非常常见的问题。 解决方案: 异步更新问题 当我们使用Vue异步更新数据时,如果不使用vm.$nextTick(),数据更新之后页面并不会立刻进行更新。 例如,在下面这个例子中,我们在点击按钮之后更新了msg的值,但是页面上的内容并没有更新。 <template&g…

    Vue 2023年5月27日
    00
  • vue实现百度下拉列表交互操作示例

    具体介绍 Vue是一款MVVM(Model-View-ViewModel)框架,它的核心是实现了双向数据绑定和组件化系统。双向绑定可以使数据的修改和视图的更新同步进行,显著提高了开发效率和协作效率;组件化系统可以将页面拆分成多个独立的模块,提高代码重用性,并且允许多人协同开发大型项目。Vue的虚拟DOM机制以及其性能表现也更加优秀,使其与Angular和Re…

    Vue 2023年5月28日
    00
  • 如何使用HBuilderX把vue项目打包成apk

    下面是使用HBuilderX将Vue项目打包成APK的攻略: 确保环境配置正确 在使用HBuilderX打包Vue项目之前,需要先确保一些环境配置已经正确安装。具体需要安装的软件如下: JDK环境:移动端应用打包需要使用到Java环境,所以首先需要下载和安装JDK。下载JDK的网址为:https://www.oracle.com/technetwork/cn…

    Vue 2023年5月28日
    00
  • 解决Vue打包之后文件路径出错的问题

    当我们使用Vue进行项目开发并进行部署时,有可能会出现打包之后文件路径出错的问题,导致浏览器无法正常加载应用程序。这个问题主要是由于打包后文件的路径不正确,需要进行相关的设置以解决。下面是解决Vue打包之后文件路径出错的完整攻略。 1. 查看打包后的路径 在进行部署之前,我们需要先查看打包后的文件路径是否正确。我们可以使用命令行进入到打包后的目录下,然后运行…

    Vue 2023年5月28日
    00
  • vue项目页面嵌入代码块vue-prism-editor的实现

    下面是摆脱块vue-prism-editor的实现攻略: 1. 安装vue-prism-editor 在项目根目录中,运行以下命令: npm install vue-prism-editor –save 这将安装vue-prism-editor,同时将其添加到项目的依赖项中。 2. 在Vue组件中使用vue-prism-editor 在Vue组件中添加以下…

    Vue 2023年5月27日
    00
  • Vue的Eslint配置文件eslintrc.js说明与规则介绍

    Vue的Eslint配置文件(eslintrc.js)是用来规范Vue项目代码风格和优化代码质量的重要配置文件。本文将详细讲解该配置文件的说明和规则介绍,包括ESLint的安装、配置文件的基本配置、插件的安装和规则的介绍。 ESLint安装 要使用ESLint,首先需要在项目中安装ESLint模块,可以使用npm或yarn进行安装。 npm install …

    Vue 2023年5月28日
    00
  • 原生javascript中检查对象是否为空示例实现

    当我们需要检查 JavaScript 中的对象是否为空时,可以采用以下步骤来实现: 首先判断该对象是否为 null 或 undefined,如果是,则该对象为空,返回 true。 function isEmpty(obj) { if (obj === null || obj === undefined) { return true; } } 检查该对象是否为…

    Vue 2023年5月27日
    00
  • Vue实现双向绑定的原理以及响应式数据的方法

    Vue 实现数据的双向绑定可以分为以下几个步骤: 将模板中的指令和事件监听器转换成渲染函数; 在渲染函数中解析表达式,生成虚拟 DOM; 将虚拟 DOM 映射到真实的 DOM 并渲染到页面; 监听数据的变化,当数据发生变化时,重新生成虚拟 DOM,并且通过 diff 算法计算出真实 DOM 的最小更新范围,最后将更新的部分重新渲染到页面上。 Vue 实现数据…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部