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如何调用接口请求头增加参数

    首先,要在 Vue 中调用接口并增加请求头参数,你需要在 Vue 中安装较为常用的发送 HTTP 请求的插件 axios。 如果你已经安装了 axios,那么在发送请求前,可以通过 axios.interceptors.request.use() 方法对请求进行拦截,再添加自定义的请求头部信息,例如: import axios from ‘axios’ //…

    Vue 2023年5月28日
    00
  • vue3中使用Apache ECharts的详细方法

    在Vue3中使用Apache ECharts的方法,可以通过以下步骤来实现: 步骤1:安装ECharts 可以通过NPM来安装ECharts,输入以下命令来安装最新版本的ECharts: npm install echarts 步骤2:在Vue3中引入ECharts 可以在Vue3中使用ECharts,只需要在需要使用的组件中引入ECharts即可,例如: …

    Vue 2023年5月28日
    00
  • Vue的computed计算属性你了解吗

    Vue的computed计算属性在Vue框架开发中非常常用。它可以根据计算函数里的数据自动计算出结果,并且在数据发生变化时会自动重新计算,然后用于渲染模板。在这篇文章中,我们将深入了解Vue的computed计算属性,掌握计算属性的使用方法和技巧。 什么是Vue的computed计算属性 Vue的computed计算属性是在Vue实例中定义的函数。它返回一个…

    Vue 2023年5月28日
    00
  • Vue中data数据初始化方法详解

    下面是关于“Vue中data数据初始化方法详解”的完整攻略。 Vue中data数据初始化方法详解 Vue中data初识 在Vue中,我们经常会使用data属性来存储组件中的数据,在组件创建时会把data中定义的数据预先初始化。 Vue.component(‘example’, { data() { return { foo: ‘bar’ } } }) 在这个…

    Vue 2023年5月28日
    00
  • vue.js实现格式化时间并每秒更新显示功能示例

    下面是“vue.js实现格式化时间并每秒更新显示功能示例”的完整攻略。 思路分析 实现该功能需要使用Vue.js框架,其核心思路是将需要更新的时间保存在Vue实例的data中,然后利用Vue实例的响应式机制,在每秒钟更新时间的同时更新视图。 具体实现方法可以使用Vue.js提供的计算属性,或者通过Vue.js生命周期函数中的定时器实现。 计算属性实现示例 下…

    Vue 2023年5月28日
    00
  • 快速了解vue-cli 3.0 新特性

    快速了解vue-cli 3.0 新特性 简介 vue-cli是一个脚手架工具,用于在Vue.js项目中快速生成模板和配置文件。在Vue.js一系列项目中,vue-cli是一个非常重要的工具,对于Vue.js的开发和部署有着重要的作用。 vue-cli 3.0 新特性 vue-cli 3.0是一个全新的版本,这个版本有着重要的改进和新特性,使得用户可以更轻松的…

    Vue 2023年5月28日
    00
  • Vue 图片压缩并上传至服务器功能

    下面是 Vue 图片压缩并上传至服务器的完整攻略。 1. 安装必要的库和工具 在使用 Vue 图片压缩并上传至服务器功能之前,需要确保已经安装以下必要的库和工具: vue: Vue.js 框架 axios: HTTP 请求库 compressorjs: 图片压缩库,用来将图片压缩至指定的大小 qs: Querystring 库,用来序列化表单数据 multe…

    Vue 2023年5月27日
    00
  • Vue项目部署上线全过程记录(保姆级教程)

    非常感谢您对Vue项目上线过程的关注。以下是我整理的“Vue项目部署上线全过程记录(保姆级教程)”的详细攻略。 确认服务器环境在开始之前,请确保您已经购买了云服务器,在服务器上安装好操作系统和需要的软件环境。推荐使用Linux系统,并保证服务器具备如下配置: 操作系统:CentOS 7/Ubuntu 14.04及以上版本; CPU:1核及以上; 内存:2GB…

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