【记录】props和data响应式、watch初始化..谁先执行【Vue父子组件生命执行周期】

news2024/11/17 16:24:38

文章目录

    • 一 、 总结
      • 1-1 源码中清楚写明:
      • 1-2
    • 二、 本次遇到的问题: 父传子props,子组件无法在mounted处理
      • 2-1 代码如下
    • 2-2

一 、 总结

1-1 源码中清楚写明:

1、 组件初始化的时候,created,props,data…执行先后顺序

  • props (already done outside of this function)
  • inject
  • methods
  • data (deferred since it relies on this access)
  • computed
  • watch

1-2

1、 我们知道,vue是个实例

在这里插入图片描述

2、 那我们就从new Vue()开始,看看到底做了什么,首先是_init方法,初始化,我们点进去继续看看
在这里插入图片描述

3、 可以看到首先是进行初始化生命周期,初始化事件中心,初始化渲染等操作,在created之前,这也就说明了为什么在created的时候无法进行dom操作

好了,这里主要的是initState函数,我们继续点进去

在这里插入图片描述

好了 看到这个函数,大家应该一目了然了吧

4、 总结:

  • 执行顺序beforeCreate ->inject -> Props -> Methods -> Data -> Computed -> Watch ->provide-> created

二、 本次遇到的问题: 父传子props,子组件无法在mounted处理

父子组件传值

2-1 代码如下

通过父组件给子组件传递函数类型的props实现,子给父传递数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
    <div id="root">
        <!-- 方法一 -->
        <school name="aaa" ref="school" @get-data="getData2"/>
        <h1>方法二</h1>
        <school name="aaa" ref="school" :getData = "getData2"/>

        <student2/>
    </div>
    <!-- <div id="root2">
        <student2/>
    </div> -->
    <script>
        const student =  Vue.extend({
            name: 'student',
            template: `
                <div>
                    <h5>{{name}}</h5>
                </div>
            `,
            data(){
                return {
                    name: 'ntt'
                }
            }
        })


        const school =  Vue.extend({
            name: 'school',
            template: `
                <div>
                    <h2>{{name2}}</h2>
                    <h2>接收到的props之: {{name}}</h2>
            
                    <student/>
                    <hr/>
                    <hr/>
                    <hr/>
                    <button @click="sendData()">发送数据</button>
                </div>
            `,
            props: {
                name: {
                    type: String,
                    required: true,
                    deafult: 'TY'
                },
                getData
            },
            mounted() {
                this.getData(this.name)
            },
            data(){
                return {
                    name2: 'TYUT'
                }
            },
            methods: {
                sendData() {
                    this.$emit('get-data',this.name2)
                    console.log(this.name2);
                }
            },
            components: {
                student
            }
        })

        // // 全局组件
        // const student2 = Vue.extend({
        //     template: `
        //     <h2>safafad</h2>
        //   `
        // })
        // Vue.component('student2', student2)


        const vm = new Vue({
            name: 'vm',
            el: '#root',
            components: {
                school
            },
            
            data() {
              return {
                jj:'nihao '
              }
            },
            // mounted() {
            //     this.$ref.school.$on('getData',this.getData)
            // },
            methods: {
               getData2(data) {
                console.log(data);
               }
            },
            mounted() {
                
            }

        })

    </script>
    
</body>
</html>

2-2

1、 报错原因:

  • school子组件mounted挂载页面时,直接调用props中传递的函数类型的getData函数
  •       props: ['name','getData'],
            mounted() {
                this.getData(this.name2)
            },
    

2、 出现报错

出现大大的疑惑: getData还没有定义嚒?父子组件的生命周期运行先后顺序是什么呀???

  • 于是出现了如上总结
  • soga,那不是钩子函数执行顺序的问题了🤔,排除,继续找错,哈哈

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96488.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生物素-二硫键-琥珀酰亚胺酯 Biotin-SS-NHS CAS:142439-92-7 具有良好的水溶性

名称&#xff1a;生物素-二硫键-琥珀酰亚胺酯 英文简称&#xff1a;BIOTIN-SS-NHS&#xff1b;NHS-SS-Biotin CAS&#xff1a;122266-55-1 结构式&#xff1a; Biotin-SS-NHS ester结构式 分子式&#xff1a;C19H28N4O6S3 分子量&#xff1a;504.64 纯度&#xff1a;95% …

Python之threading: 带你了解多线程的强大威力!

前言 什么是多线程 多线程是指在一个程序中同时创建和使用多个执行流(thread)来执行不同的任务。这样多个任务就可以同时进行&#xff0c;从而提高程序的执行效率。 在python使用多线程的方法 在 Python 中有两种方法可以使用多线程&#xff1a;使用 Python 自带的 threadin…

Redis Java 客户端工具 - Lettuce框架介绍

Redis Java 客户端 - Lettuce 今天学习下Redis Java客户端开源项目 - Lettuce&#xff0c;Lettuce支持同步、异步通信的方式 API调用&#xff0c;也支持响应式编程API&#xff0c;包括发布/订阅消息、高可用性服务部署架构。 开始之旅 Maven依赖 <dependency><gro…

Python实现SSH远程操作Linux(paramiko库)

参考&#xff1a;https://blog.csdn.net/qq_40558166/article/details/100172501 一、官网 https://www.paramiko.org/ 二、安装库 1.命令 pip install paramiko 或 pip install paramiko –i https://pypi.douban.com/simple/ 三、辅助软件(可忽略) 1.Xshell(执行命令) …

[附源码]Node.js计算机毕业设计黑格伯爵国际英语贵族学校官网Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

Ubuntu 配置本地root登录

Ubuntu 配置本地root登录–18.04 给root用户设置密码 按照下图方式 命令&#xff1a;sudo passwd root 切换到root用户 使用 su 或者是 su root 切换到 root 修改配置文件 进入该目录&#xff1a; cd /usr/share/lightdm/lightdm.conf.d/ 查看文件 ls 使用gedit 编辑文…

Arduino UNO新手零基础入门学习博客汇总

写在开头 最近在上Arduino的课&#xff0c;可以说Arduino对新手来说非常友好了&#xff0c;因为相比于51和32&#xff0c;Arduino的库函数下载就好&#xff0c;不需要自己去写&#xff0c;就很方便 我的硬件设备 博客汇总 博客内容大多数以实际案例为主&#xff0c;基本都是…

机器学习100天(七):007 简单线性回归理论

机器学习100天,今天讲的是简单线性回归理论。 首先来看第一个问题:什么是线性回归?我们先引入一个例子。 假如我现在有一份数据,这份数据是一些地区人口和对应房价的信息。我们把这份数据展示在二维平面上。横坐标是人口,纵坐标是房价,红色的点就表示每个地区的实际人口…

论文精读:EfficientDet: Scalable and Efficient Object Detection

Abstract 首先&#xff0c;本篇论文提出了一种加权双向特征金字塔网络&#xff08;BiFPN&#xff09;&#xff0c;进行简单、快速的多尺度特征融合&#xff1b;其次&#xff0c;作者提出了一种复合尺度方法&#xff0c;同时统一调整所有主干、特征网络和box/类别预测网络的分辨…

kali linux的安装教程

kali linux的安装教程 在网上输入网址https://www.kali.org/get-kali/#kali-virtual-machines。 向下滚动鼠标滑轮选择如下图所示的图标进行安装iso镜像文件。 我们打开虚拟机&#xff0c;选择创建新的虚拟机 选择其中的自定义&#xff0c;随即点击下一步 点击下一步 点击下一步…

uboot通过bootargs传递内核中的模块传递参数

前言 bootargs是uboot向内核传递参数时使用的&#xff0c;本次我们要验证的是bootargs向内核启动后加载的模块传递的参数&#xff0c;真正的跨过山和大海。跟着我的脚步&#xff0c;来一次bootargs之旅。 这是一个综合性&#xff0c;系统性很强的实例验证&#xff0c;要做这个…

模式识别-期末复习题(问题集锦)

1.什么是模式&#xff1f;监督模式识别和非监督模式识别的典型过程分别是什么&#xff1f; 模式&#xff1a;指需要识别且可测量的对象的描述 监督模式识别&#xff1a;分析问题→原始特征提取→特征提取与选择→分类器设计 非监督模式识别&#xff1a;分析问题→原始特征提…

C++ Reference: Standard C++ Library reference: Containers: map: map: insert

C官网参考链接&#xff1a;https://cplusplus.com/reference/map/map/insert/ 公有成员函数 <map> std::map::insert C98 single element (1) pair<iterator,bool> insert (const value_type& val); with hint (2) iterator insert (iterator positio…

【密码学】MD5、UUID,加盐,JWT的理解与使用范例

文章目录MD5加密&#xff1a;1、MD5加密安全访问认证示例代码&#xff1a;2、UUID简介&#xff1a;使用&#xff1a;3、加盐原理&#xff1a;示例代码&#xff1a;4、jwt认知&#xff1a;JWT 结构&#xff1a;范例代码&#xff1a;MD5加密&#xff1a; 1、MD5加密 Message Di…

计算机毕业设计springboot+vue基本微信小程序的疫情防控平台系统

项目介绍 当今社会疫情防控平台是必不可少的,大家都在听从政府的号召在居家隔离,不管是在城市还是在乡镇、农村,这引起我的注目,设计一套社区疫情防控系统,疫情防控需要大家共同努力、团结对社区居民进行了新型冠状病毒肺炎防控知识普及和宣传教育。针对这一需求,本文设计并实现…

LVS详细介绍,这么讲不信你不明白负载均衡

Linux virtual server&#xff0c;是一个基于集群技术和Linux操作系统&#xff0c;目的是实现一个高性能、高可用的服务器&#xff0c;主要工作在网络层。 他采取IP负载均衡&#xff0c;也叫三层负载均衡&#xff08;因为工作在OSI模型的第三层--网络层&#xff09;&#xff0…

java计算机毕业设计springboot+vue旅游攻略平台

项目介绍 目前,我国旅游业正处于高度发展的状态。越来越多的人在假日里选择出游作为放松自己身心的手段。随着网络的普及和发展,人们开始习惯性地在做某事之前先在网络上浏览相关的内容。旅游网站能够帮助游客了解景点相关信息,推出相应的线路信息供游客们选择,并查看相应的旅…

计算机网络实验——路由器的配置静态与RIP配置

前言 由于几个资料和老师给的ppt说的都不清楚&#xff0c;自己也没想到什么很巧妙的归纳方法&#xff0c;写个总结记录一下。 想必静态路由配置的过程中唯一的难点就是ip route这个指令&#xff0c;其他的什么添加接口&#xff0c;设置ip啥的都是基础路由配置中的内容&#xf…

2023春招面试专题:JAVA基础高频面试

ArrayList和LinkedList有哪些区别 ArrayList扩容机制: ArrayList() 会使用长度为零的数组ArrayList(int initialCapacity) 会使用指定容量的数组public ArrayList(Collection<? extends E> c) 会使用 c 的大小作为数组容量add(Object o) 首次扩容为 10&#xff0c;再次…

3D激光里程计其一:ICP

这里写目录标题1. ICP 整体流程2. ICP 的数学表示3. 基于 SVD 的 ICP3.1 旋转部分求解3.2 平移部分求解4. 基于优化的 ICP5. ICP 系列汇总Reference: 深蓝学院-多传感器融合 1. ICP 整体流程 目的&#xff1a;有两个相似的刚体点云&#xff0c;它们之间没有做好配准&#xff…