Vue 生命周期和数据共享详解

目录
  • 1.组件的生命周期
    • 1.1生命周期与生命周期函数
    • 1.2组件生命周期函数的分类
    • 1.3生命周期图示以及详解
  • 2.组件之间的数据共享
    • 2.1组件之间的关系
    • 2.2父向子传值
    • 2.3子向父传值
    • 2.4兄弟之间的数据关系
  • 总结

1. 组件的生命周期

1.1 生命周期与生命周期函数

生命周期是指一个组件从 创建 => 运行 => 销毁 的整个时间段,强调的是一个时间段生命周期函数是由 vue 框架提供的内置函数,会伴随着组件的生命周期,自动按次序执行

1.2 组件生命周期函数的分类

1.3 生命周期图示以及详解

组件创建阶段

  • beforeCreted props/data/methods … 都未被创建,啥也干不了
  • created
    • props/data/methods … 都创建好了
    • 经常在此函数里调用 methods 中的方法,请求服务器中的数据
    • 并且把请求到的数据转存在 data 中,提供 template 模板渲染的时候使用。
    • 但是模板结构尚未生成,不能访问 DOM 结构,DOM 结构均为 null
  • beforeMount 将要把内存中编译好的 HTML 结构渲染到浏览器中
  • mounted
    • 已经把内存中的 HTML 结构成功的渲染到了浏览器
    • 此时浏览器中已经包含了当前组件的 DOM 结构
    • 这也是最早可以操作 DOM 的时候

组件运行阶段

  • beforeUpdata

    • 将要根据变化过最新的数据重新渲染组件的模板结构
    • data是最新的 ui结构中的内容还是旧的
  • updataed 
    • 已经根据最新的数据完成了组件的 DOM 结构的重新渲染
    • 新的 data 最新的 ui结构
    • 当数据变化之后,操作最新的 DOM 结构

组件销毁阶段

beforeDestory 将要销毁这个组件,此时尚未销毁组件还处于正常工作的状态

destoryed 组件已经完全被销毁,此时组件在浏览器中对应的 DOM 结构已经完全移除

2. 组件之间的数据共享

2.1 组件之间的关系

在项目的开发中,组件之间的最常见的关系分为如下两种:

  • 父子关系
  • 兄弟关系

2.2 父向子传值

使用自定义属性

  • 简单类型复制复杂类型是传的引用
  • 不要修改 props 的值
  • 父组件通过 v-bind 绑定数值
<Son :msg="message" :user="userinfo"></Son>
export default {
    data() {
        return {
            message: 'hello son',
            userinfo: {
                name: 'pingting',
                age: 18
            }
        }
    }
}

子组件通过 props 声明自定义属性

<div>
    <h3>Son 组件</h3>
    <p>父组件传过来的 msg: {{ msg}} </p>
    <p>父组件传过来的 user:{{ user}} </p>
</div>
export default {
    props: ['msg' , 'user']
}

2.3 子向父传值

使用自定义事件

子组件通过 $emit 将值传递给父组件

当 click事件触发 => 调用 add 函数 => 触发 numChange 事件 =>

this.count作为实参传递给 getNewCount 函数 => 形参为 val

export default {
    data(){
        return {
            // 子组件的数据
            count: 0
        }
    },
    methods: {
        add(){
            this.count += 1
            // 触发一个自定义事件并且传递参数
            this.$emit('numChange' , this.count)
        }
    }
}

父组件

@ 绑定自定义事件

<Right @numChange="getNewCount"></Right>
export default {
    data() {
        return {
            // 接收 right 传过来的 count
            countFather: 0
        }
    },
    methods: {
      getNewCount(val){
        this.countFather = val
      }
    }
}

2.4 兄弟之间的数据关系

在 vue2.x 使用 eventBus

创建 eventBus.js 模块,并向外共享一个 Vue 的实例对象

import Vue from 'vue'
export default new Vue()

在数据发送方,调用 bus.$emit('事件名称',发送的数据) 方法触发自定义事件

<button @click="sendStr">发送数据给 Right </button>
import bus from './eventBus.js'
export default {
    data(){
        return {
            str: '这是Son的str数据,将要共享出去'
        }
    },
    methods: {
        sendStr(){
            // 通过 eventBus 发送数据
            bus.$emit('share' , this.str)
        }
    }
}

在数据接收方,调用 bus.$on('事件名称',事件处理函数) 方法注册一个自定义事件

<p>从 Son 接受的数据:{{ strFromSon }} </p>
import bus from './eventBus.js'
export default {
    data(){
        return {
            strFromSon: ''
        }
    },
    created() {
        bus.$on('share' , (val) => {
            this.strFromSon = val
        })
    }
}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Vue3生命周期钩子函数详解

    本文实例为大家分享了Vue3生命周期钩子函数的具体代码,供大家参考,具体内容如下 一.Vue3生命周期钩子 setup() : 开始创建组件之前,在 beforeCreate 和 created 之前执行,创建的是 data 和 methodonBeforeMount() : 组件挂载到节点上之前执行的函数:onMounted() : 组件挂载完成后执行的函数:onBeforeUpdate(): 组件更新之前执行的函数:onUpdated(): 组件更新完成之后执行的函数:onBeforeUnm

  • 详解vue生命周期

    目录 为什么要理解生命周期 什么是生命周期 生命周期钩子函数 created和mounted 钩子的一些实战用法 1.异步函数 2.Vue.nextTick对异步函数的结果进行操作 总结 为什么要理解生命周期 用Vue框架,熟悉它的生命周期可以让开发更好的进行. 如果只是单纯地知道vue里面的简单语法,你是可以实现对应的一些项目和对应的想法,但是如果一旦发生问题,我们就需要借助生命周期去寻找问题,甚至说有一些需求的话,你也通过生命周期的情况来定我们该把这个东西写在哪里.所以理解vue的生命周期还

  • Vue的生命周期一起来看看

    目录 1.生命周期(重要) 1.1初步认识生命周期 1.2生命周期流程(8个) 1.3生命周期详细流程图 1.4常用的生命周期钩子: 1.4.1关于销毁 1.4.2关于父子组件的生命周期 1.5小案例 1.6代码举例说明生命周期钩子 总结 1. 生命周期(重要) 1.1 初步认识生命周期 别名:生命周期回调函数.生命周期函数.生命周期钩子. 生命周期是什么?Vue在关键时刻帮我们调用的一些特殊名称的函数. 生命周期函数的名字不可更改,但函数内部的具体内容由程序员自行编写 生命周期函数中的this

  • 浅谈vue的生命周期

    目录 1.什么是生命周期?有什么作用? 2.第一次加载页面会触发哪几个钩子? 3.简述每个周期应用于哪个场景? 4.created和mounted的区别 5.vue在哪个生命周期获取数据? 总结 1.什么是生命周期?有什么作用? 每一个vue实例在创建时都要经历一系列的初始化过程-----例如需要设置监听,编译模板,将实例挂载到dom并在数据发生变化时更新dom等等.同时这个时候也会运行一些生命周期钩子的函数,这些函数,给用户在不同阶段添加代码的机会.例如:如果需要某些插件操作dom节点,如果想

  • 一起来学习Vue的生命周期

    目录 生命周期 生命周期的简单介绍 beforeCreate与created beforeCreate() created() beforeMount与mounted beforeMount() mounted()(重要) beforeUpdate与updated beforeUpdate() updated() beforeDestroy与destroyed beforeDestroy()(重要) destroyed() 总结 生命周期 生命周期的简单介绍 1.生命周期又叫做:生命周期回调函数

  • Vue 生命周期和数据共享详解

    目录 1.组件的生命周期 1.1生命周期与生命周期函数 1.2组件生命周期函数的分类 1.3生命周期图示以及详解 2.组件之间的数据共享 2.1组件之间的关系 2.2父向子传值 2.3子向父传值 2.4兄弟之间的数据关系 总结 1. 组件的生命周期 1.1 生命周期与生命周期函数 生命周期是指一个组件从 创建 => 运行 => 销毁 的整个时间段,强调的是一个时间段.生命周期函数是由 vue 框架提供的内置函数,会伴随着组件的生命周期,自动按次序执行. 1.2 组件生命周期函数的分类 1.3

  • VUE生命周期全面系统详解

    目录 什么是生命周期 生命周期的作用 vue生命周期有哪些 Vue 生命周期总共分为几个阶段 1)beforeCreate创建前 2)created创建后 3)beforeMounte挂载前 4)mounted挂载后 5)beforeUpdate更新前 6)updated更新后 7)beforeDestroy销毁前 8)destroyed销毁后 问题 什么是生命周期 每个组件在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听.编译模板.将实例挂载到 DOM 并在数据变化时更新 DOM

  • Vue的属性、方法、生命周期实例代码详解

    实例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible"

  • IOS UIView的生命周期的实例详解

    IOS UIView的生命周期的实例详解 任何对象的者有一个生命周期,即都存在一个实例化到销毁的过程. UIView对象也不例外,那么UIView从init/new开始后,直到dealloc结束的过程中都经历了哪些过程呢? 首先自定义继承自UIView的对象LifeView #import <UIKit/UIKit.h> @interface LifeView : UIView @end #import "LifeView.h" @interface LifeView ()

  • Maven 配置文件 生命周期 常用命令详解

    当前,JVM生态圈主要的三大构建工具: Apache Ant(带着Ivy) Maven Gradle 对于初学者,Ant是最清晰的,只要读懂Xml配置文件你就能够理解它干了什么,但是ant文件很容易变的更加复杂.Maven有自己的工程目录规则和内置的构建生成周期,从而使构建文件更加简单.gradle有很多开箱即用的插件,语法更加短小精悍,易于理解. 在讲解maven之前这里我们先简单比较下Maven和Ant.下面是一个简单的Ant例子.这个例子可以看出我们需要明确的告诉Ant.我们想让他做什么.

  • Java Spring循环依赖原理与bean的生命周期图文案例详解

    前言 Spring是如何处理循环依赖的,又是怎么做到,互相注入对方的proxy bean而不是raw bean的?现在就分析一下 一.循环依赖是什么 Spring中放入两个Service,分别是C1和C2,然后C1和C2又互为对方的成员变量.这种情况C1和C2就可以说是相互循环依赖了 二.源码图解 1. bean的主要生命周期图解 上图是一个没有循坏依赖的bean的主要生命周期节点,下图的循坏依赖可以结合该图解一起看 2.循环依赖图解 可以看到里面有一个很重要的逻辑: 当一个bean经过所有的步

  • Vue组件之间的数据共享详解

    目录 一.在项目开发中,组件之间的最常见的关系分为如下两种: 1.1 父子组件之间的数据共享 1. 父 -> 子共享数据 2.子 -> 父共享数据 1.2 兄弟组件之间的数据共享 总结 一.在项目开发中,组件之间的最常见的关系分为如下两种: 1.父子关系 2.兄弟关系 1.1 父子组件之间的数据共享 父子组件之间的数据共享又分为: 1. 父 -> 子共享数据 子组件: 父组件: 2.子 -> 父共享数据 子组件向父组件共享数据使用自定义事件.示例代码如下 子组件: 父组件: 页面显

  • vue生命周期的探索

    那么进入某个路由对应的组件的时候,我们会触发哪些类型的周期呢? 根实例的加载相关的生命周期(beforeCreate.created.beforeMount.mounted) 组件实例的加载相关的生命周期(beforeCreate.created.beforeMount.mounted) 全局路由勾子(router.beforeEach) 组件路由勾子(beforeRouteEnter) 组件路由勾子的next里的回调(beforeRouteEnter) 指令的周期(bind,inserted)

  • Vue生命周期区别详解

    生命周期分类 vue每个组件都是独立的,每个组件都有一个属于它的生命周期, 从一个组件创建.数据初始化.挂载.更新.销毁,这就是一个组件所谓的生命周期. 在组件中具体的方法有: beforeCreate created beforeMount mounted beforeUpdate updated beforeDestroy destroyed beforeCreate( 创建前 ) 在实例初始化之后,数据观测和事件配置之前被调用,此时组件的选项对象还未创建,el 和 data 并未初始化,因

随机推荐