vue数据初始化initState的实例详解

Vue数据初始化initState的实例详解

什么是initState

在Vue实例化过程中,initState是一个非常重要的方法。它负责初始化Vue实例的各种属性、数据和方法等,是Vue实例化的关键过程之一。

initState源码解析

Vue实例化过程的源码分析比较复杂,这里只讲述其中涉及到initState的部分。

function initState(vm: Component) {
  // ...
  initStateData(vm);
  // ...
}

function initStateData(vm: Component) {
  const data = vm.$options.data;
  data = vm._data = typeof data === 'function' ? getData(data, vm) : data || {};
  // ...
}

从上述代码片段中,我们可以看到以下几个关键点:

  • initStateData函数负责初始化Vue实例的 data 属性,如果有为方法则递归执行筛选后的结果。
  • 在执行完initState函数后,便会得到处理之后的vue实例对象。

实例1

接下来,我们通过一个具体的例子来理解initState的作用。

new Vue({
  data() {
    return {
      message: 'Hello World'
    }
  }
});

上述代码会创建一个新的Vue实例,并且实例对象上的_data属性会被赋值为:

{
  message: 'Hello World'
}

实例2

我们再来看一个含有computed属性的例子:

new Vue({
  data() {
    return {
      message: 'Hello World'
    }
  },
  computed: {
    reversedMessage() {
      return this.message.split('').reverse().join('')
    }
  }
});

上述代码会创建一个新的Vue实例,并且实例对象上的_data属性会被赋值为:

{
  message: 'Hello World'
}

实例对象上的_computedWatchers属性会被赋值为:

{
  reversedMessage: {
    getter: /*此处省略*/,
    value:/*此处省略*/,
    vm: /*此处省略*/
  }
}

经过initState函数的处理,我们可以看到Vue实例对象上的_data属性和_computedWatchers属性都得到了正确的初始化。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue数据初始化initState的实例详解 - Python技术站

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

相关文章

  • Vue.js学习笔记之修饰符详解

    Vue.js是一款流行的JavaScript框架,使用Vue.js可以简化Web应用程序的开发。其中修饰符是Vue.js提供的一种高级技术,可以扩展指令的行为。本文将为大家提供Vue.js修饰符的详解。 修饰符是什么 在Vue.js中,指令是带有前缀v-的特殊属性。指令带有参数和修饰符,指令的行为可以由参数和修饰符来控制。修饰符可以在指令后面的点号后面添加,…

    Vue 2023年5月27日
    00
  • 如何巧用Vue缓存函数浅析

    关于“如何巧用Vue缓存函数浅析”,以下是完整攻略: 1. 什么是Vue缓存函数? Vue缓存函数是Vue.js提供的优化性能的一种方式。简单来说就是缓存一个函数,使得函数的计算结果能够被复用。在Vue的计算属性中经常使用到这种技巧,也可以应用在一些需要缓存结果的函数上。 2. 如何利用Vue缓存函数优化程序性能? 利用Vue缓存函数,可以有效地减少不必要的…

    Vue 2023年5月27日
    00
  • vue2.x+webpack快速搭建前端项目框架详解

    Vue2.x+Webpack快速搭建前端项目框架攻略 本文介绍如何使用Vue2.x和Webpack快速搭建前端项目框架。这里提供一个完整的步骤来创建一个简单的Vue应用程序,以及一些示例来解释这些步骤。 步骤1:创建项目 首先,我们需要创建一个新项目。可以使用vue-cli来创建新项目,它将为我们处理所有必要的设置。 vue create my-projec…

    Vue 2023年5月27日
    00
  • vue清空form对象的方法

    当我们使用Vue框架开发前端应用时,经常需要将前端表单数据绑定到Vue实例属性,但是在一些场景中,当我们需要清空这些表单数据时,可以使用以下两种方法: 方法一:重新创建Vue实例 在一些简单的应用中,我们可以通过重新创建Vue实例来清空表单数据,示例代码如下: <template> <div> <input type=&quot…

    Vue 2023年5月28日
    00
  • vue中process.env的具体使用

    下面就是关于”Vue中process.env的具体使用”的完整攻略。 什么是process.env 在Node.js中,process.env是一个对象,包含当前shell的所有环境变量。 在Vue中的process.env是一种环境变量集合,包含了我们当前运行的Vue应用程序的所有环境变量。 此时,我们可以利用process.env对象来获取不同环境所需要…

    Vue 2023年5月29日
    00
  • 使用SpringBoot+EasyExcel+Vue实现excel表格的导入和导出详解

    使用SpringBoot+EasyExcel+Vue实现excel表格的导入和导出,主要步骤如下: 1.引入EasyExcel依赖 在pom.xml中引入EasyExcel依赖: <!– 引入EasyExcel –> <dependency> <groupId>com.alibaba</groupId> &…

    Vue 2023年5月28日
    00
  • SpringBoot使用Shiro实现动态加载权限详解流程

    下面是”SpringBoot使用Shiro实现动态加载权限详解流程”的完整攻略: 1. 确定需求 首先,我们需要明确本次实现的需求。我们将使用Shiro来实现认证和权限控制,同时,我们的权限控制将支持动态的添加和删除。具体来说,我们需要实现以下功能: 用户登录 用户退出 用户认证 用户权限控制 动态添加权限 动态删除权限 2. 搭建SpringBoot项目 …

    Vue 2023年5月28日
    00
  • Vue源码makeMap函数深入分析

    OK,让我来详细讲解“Vue源码makeMap函数深入分析”的完整攻略。 标题 Vue源码makeMap函数深入分析 简介 首先,我们需要知道 makeMap 是什么,它是 Vue 源码中常用的一个函数,主要用于生成一个对象,对象中的 key 都是小写的字符串,同时这些 key 都对应着 true 这个固定的值。makeMap 函数是 Vue 源码中非常重要…

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