对vue里函数的调用顺序介绍

yizhihongxing

接下来我会详细讲解“对vue里函数的调用顺序介绍”的完整攻略。

1. Vue函数的调用顺序

Vue中的函数调用顺序有如下几种情况:

  1. beforeCreate(创建前): 这个阶段会在Vue实例初始化之后,数据观测之前被调用。在此阶段,我们无法访问到 data、computed、methods、watch中的任何属性。

  2. created(创建后): 该阶段在实例创建完成后被立即调用。此时我们已经可以访问到 data、computed、methods、watch 中的任何属性,也可以对它们进行修改。

  3. beforeMount(挂载前): 这个阶段将在挂载开始之前被调用。在此阶段中,Vue 将编译模板,并将其转换为虚拟 DOM 渲染函数。

  4. mounted(挂载后): 在挂载阶段完成后被调用,此时实例已经完成了数据绑定,可以访问到模板中的元素。

  5. beforeUpdate(更新前): 当数据更新之后,导致 DOM 重新渲染和 patch 重新执行之前,会调用 beforeUpdate 钩子函数。

  6. updated(更新后): 当数据更新完成后会调用 updated 钩子函数,此时已经完成了 DOM 的重新渲染。

  7. beforeDestroy(销毁前): Vue 实例在销毁前会调用 beforeDestroy 钩子函数,在这里我们还能访问到实例中的数据。

  8. destroyed(销毁后): 当实例被销毁时会调用 destroyed 钩子函数,这个时候我们已经无法访问到实例的数据,方法以及 DOM 。

2. 示例说明

示例1: 父子组件的数据传递

在父组件挂载结束之后,子组件中定义的 mounted 钩子函数才会依次执行。

<template>
  <div>
    <h1>父组件</h1>
    <p>父组件数据: {{message}}</p>
    <Child v-bind:childMessage="message"></Child>
  </div>
</template>

<script>
import Child from './Child.vue';

export default {
  components: {
    Child
  },
  data() {
    return {
      message: '我是父组件的数据'
    }
  },
  mounted() {
    console.log('父组件 mounted');
  }
}
</script>
<template>
  <div>
    <h2>子组件</h2>
    <p>子组件数据: {{childMessage}}</p>
  </div>
</template>

<script>
export default {
  props: {
    childMessage: String
  },
  mounted() {
    console.log('子组件 mounted');
  }
}
</script>

以上代码中,我们在父组件中定义一个数据 message,然后将它作为父组件向子组件传递的 props 属性 childMessage 的值。在子组件中,我们通过 props 属性来接收父组件传递的数据,并在界面中渲染出来。

执行结果:

父组件 mounted
子组件 mounted

示例2: 本地存储数据的使用

假设我们有这样一个需求:当用户在某个组件中填写了一些表单数据后,需要把数据存储到本地,以方便用户下次访问该页面时使用这些数据。我们可以在组件的 beforeDestroy 钩子函数中实现这个功能。

<template>
  <div>
    <form>
      <label>姓名:</label>
      <input type="text" v-model="name">
      <br>
      <label>电话:</label>
      <input type="text" v-model="phone">
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      name: '',
      phone: ''
    }
  },
  mounted() {
    console.log('组件 mounted');
    let data = JSON.parse(localStorage.getItem('formData'));
    if (data) {
      this.name = data.name;
      this.phone = data.phone;
    }
  },
  beforeDestroy() {
    console.log('组件被销毁前存储数据');
    let formData = {
      name: this.name,
      phone: this.phone
    };
    localStorage.setItem('formData', JSON.stringify(formData));
  }
}
</script>

在上述代码中,我们定义了一个含有两个表单项的组件,通过 v-model 实现了表单数据的双向绑定。在组件挂载完成后,我们调用了 localStorage 的 getItem 方法,从本地存储中读取数据,并将数据绑定到表单中展示。在组件 beforeDestroy 钩子函数中,我们将表单数据封装为 formData 对象,并将其以字符串的形式存储到本地存储中。

执行结果:

组件 mounted
组件被销毁前存储数据

以上就是对 vue 函数调用顺序介绍的详细攻略。希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:对vue里函数的调用顺序介绍 - Python技术站

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

相关文章

  • 详解Vue template 如何支持多个根结点

    Vue的template支持多个根节点的方法主要有两种,一种是使用Vue提供的template元素,另一种是使用Fragment。下面将详细介绍这两种方法的具体实现步骤。 一、使用Vue提供的template元素 1.1 什么是template元素 Vue提供了一个特殊的template元素,它可以作为多个根结点的容器。在使用该元素时,Vue会自动将它作为容…

    Vue 2023年5月27日
    00
  • 深入理解Vue nextTick 机制

    深入理解Vue nextTick 机制 什么是 nextTick? 在 Vue 中,nextTick 是 Vue 实例提供的一个方法,可以将回调函数延迟到 DOM 更新之后执行。nextTick 适用于在需要对 DOM 做出修改后,需要立即执行某些操作的场景。 nextTick 方法在 Vue 生命周期的更新阶段之后执行,它触发时会让 Vue 在内部依次执行…

    Vue 2023年5月28日
    00
  • vue中的get方法\post方法如何实现传递数组参数

    传递数组参数是前端开发中非常常见的需求,vue中的get和post方法也是我们日常开发中最常使用的API请求方式之一。下面是具体步骤: 一、利用axios的方式发送请求(Vue-Axios) 安装axios和Vue-Axios npm install axios vue-axios –save 在Vue中全局引入axios import Vue from …

    Vue 2023年5月29日
    00
  • vue之使用vuex进行状态管理详解

    Vue之使用Vuex进行状态管理详解 前言 在Vue的开发中,随着应用规模的增大,状态管理变得越来越重要。在实现多个组件之间共享状态时,Vuex是一个非常好的选择。本文将详细讲解如何使用Vuex进行状态管理。 什么是Vuex Vuex是Vue.js应用程序开发的状态管理模式。它主要集中在管理应用中的所有组件的状态(比如,商店中的商品、购物车中的商品、登录用户…

    Vue 2023年5月28日
    00
  • Qiankun原理详解JS沙箱是如何做隔离

    Qiankun是一个微前端框架,其中的JS沙箱是Qiankun实现隔离的核心原理之一。JS沙箱是通过在沙箱环境中运行JS代码以及将运行结果导出到外部环境来实现隔离的。 以下是Qiankun的JS沙箱运行的完整攻略: 创建沙箱环境 在Qiankun中,我们可以使用html和iframe来创建沙箱环境,具体代码如下: <iframe id="qk…

    Vue 2023年5月28日
    00
  • Vue3将虚拟节点渲染到网页初次渲染详解

    Vue3将虚拟节点渲染到网页初次渲染详解 在Vue3中,将虚拟节点渲染到网页上,是在createApp的过程中完成的。具体的过程如下: 创建Vue实例 我们可以使用createApp方法创建Vue实例,如下: const app = Vue.createApp({ // Options }) createApp方法中的参数可以传入一个普通的JavaScrip…

    Vue 2023年5月28日
    00
  • uniapp H5 https跨域请求实现

    前置知识 在开始讲解“uniapp H5 https跨域请求实现”之前,我们需要了解一些基础的知识: HTTP和HTTPS:是基于传输层协议TCP/IP协议族来传递数据的; 跨域:是指在一个网页上加载的资源请求了另外一个域名下的资源(图片、链接、JS、CSS等),浏览器为了安全性会直接拒绝这种行为,因为存在很大的安全隐患; JSONP跨域:是一种脚本注入技术…

    Vue 2023年5月28日
    00
  • vue文件树组件使用详解

    下面是关于如何使用Vue树形组件的详细攻略: 1. 安装和引入 首先,需要安装并引入Vue树形组件库。你可以通过命令行安装npm包: npm install treevue –save 也可以直接在HTML文件中引入CDN: <script src="https://unpkg.com/treevue/dist/treevue.min.js…

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