1、首先来官方服生命=周期的解释:

  • beforeCreate():实例在内存中被创建出来,还没有初始化好data和methods属性。
  • create():实例已经在内存中创建,已经初始化好data和method,此时还没有开始编译模板。
  • beforeMount():已经完成了模板的编译,还没有挂载到页面中。
  • mounted():将编译好的模板挂载到页面指定的容器中显示。
  • beforeUpdate():状态更新之前执行函数,此时data中的状态值是最新的,但是界面上显示的数据还是旧的,因为还没有开始重新渲染DOM节点。
  • updated():此时data中的状态值和界面上显示的数据都已经完成了跟新,界面已经被重新渲染好了!
  • beforeDestroy():实例被销毁之前。
  • destroyed():实例销毁后调用,Vue实例指示的所有东西都会解绑,所有的事件监听器都会被移除,所有的子实例也都会被销毁。组件已经被完全销毁,此时组建中所有data、methods、以及过滤器,指令等,都已经不可用了。

2、工作中的用法:

  • beforecreate : 可以在这函数中初始化加载动画。
  • created :做一些数据初始化,实现函数自执行。
  • mounted: 调用后台接口进行网络请求,拿回数据,配合路由钩子做一些事情。
  • destoryed :当前组件已被删除,清空相关内容。

在实际开发项目的过程中,mounted主要做网络请求和重新赋值。

数据对象data:初始化属性及能够其响应数据变化,data 必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例。

注:vue组件中的data为什么是一个函数:

组件是可复用的vue实例,一个组件被创建好之后,就可能被用在各个地方,而组件不管被复用了多少次,组件中的data数据都应该是相互隔离,互不影响的,基于这一理念,组件每复用一次,data数据就应该被复制一次,之后,当某一处复用的地方组件内data数据被改变时,其他复用地方组件的data数据不受影响;

组件中的data写成一个函数,数据以函数返回值形式定义,这样每复用一次组件,就会返回一份新的data,类似于给每个组件实例创建一个私有的数据空间,让各个组件实例维护各自的数据。而单纯的写成对象形式,就使得所有组件实例共用了一份data,就会造成一个变了全都会变的结果。

//使用方法
data: function () {
return {
message: 'Welcome Vue',
goodsImg: '',
itemGoodsId: '',
imageUrls: []
}
},

计算属性computed: 将返回function内return的值赋值在html的DOM上,computed内的function也只执行一次。仅当function内涉及到Vue实例绑定的data的值的改变,function才会从新执行,并修改DOM上的内容。

<template>
<div>
<div>{{reversedMessage}}</div>
<div @click="handlerCilck">点我</div>
</div>
</template> <script>
export default {
name: 'test',
data(){
return{
message: 'hello'
}
},
computed: {
reversedMessage: function () {
return this.message.split('').reverse().join('')
}
},
methods:{
handlerCilck(){
this.message = 'hello world'
this.reversedMessage()//重新修改DOM的值
}
}
}
</script>

自定义方法methods:methods:{所有页面的自定义函数}

<div  @click="clickReverse">点击</div>
methods:{
clickReverse(){
this.message = 'hello world'
this.reversedMessage()//重新修改DOM的值
},
}

  beforeRouteEnter(to, from, next):进入路由之前执行的函数,写在组件里可根据路由进行页面判断或传值。

beforeRouteLeave(to, from, next):离开路由之前执行的函数,可用于页面的反向传值,页面跳转。

 // 点击后拿到数据返回给下单地址
beforeRouteLeave (to, from, next) {
if (to.name === 'home') {
to.query.temp = '这里是参数,选中后的地址'
}
console.log(to)
console.log(from)
next()//一定不要忘记写
},

具体方法和参数按照工作中的需求而自行应用。

vue生命周期在工作中的用法的更多相关文章

  1. vue生命周期图示中英文版Vue实例生命周期钩子

    vue生命周期图示中英文版Vue实例生命周期钩子知乎上近日有人发起了一个 “react 是不是比 vue 牛皮,为什么?” 的问题,Vue.js 作者尤雨溪12月4日正面回应了该问题.以下是尤雨溪回复 ...

  2. 在vue生命周期中及时销毁全局作用的代码

    一.纯客户端中 对于全局的代码,比如定时器等,在 beforeDestroy或 destroyed 生命周期时将其销毁.如果在跳转路由时候,组件销毁了,全局的定时器却没有销毁,这会使得页面产生卡顿. ...

  3. Vue学习之--------Vue生命周期beforeCreate、created、beforeMount、mounted、beforeDestroy 。。。(图解详细过程)(2022/7/17)

    文章目录 1.Vue生命周期 1.1 概念 1.2 图解 2.钩子函数的用法说明 2.1 beforeCreate()和created()的详细讲述 2.1.1 方法说明 2.1.2 代码实例 2.1 ...

  4. Vue生命周期,面试常见问题

    一.对于MVVM的理解? MVVM 是 Model-View-ViewModel 的缩写.Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑.View 代表UI 组件,它负责将数 ...

  5. vue生命周期以及vue的计算属性

    一.Vue生命周期(vue实例从创建到销毁的过程,称为生命周期,共有八个阶段) 1.beforeCreate :在实例初始化之后,数据观测 (data observer) 和 event/watche ...

  6. Vue系列(二):发送Ajax、JSONP请求、Vue生命周期及实例属性和方法、自定义指令与过渡

    上一篇:Vue系列(一):简介.起步.常用指令.事件和属性.模板.过滤器 一. 发送AJAX请求 1. 简介 vue本身不支持发送AJAX请求,需要使用vue-resource.axios等插件实现 ...

  7. Vue生命周期学习总结

    官方文档上关于Vue生命周期的图片大家一定很熟悉: 1.beforeCreate 实例.组件通过new Vue() 创建出来之后会初始化事件和生命周期,然后就会执行beforeCreate钩子函数,这 ...

  8. 【vue生命周期】- 详解

    这篇文章通俗易懂,写的不错,本文转载至:https://www.cnblogs.com/happ0/p/8075562.html 详解Vue Lifecycle 先来看看vue官网对vue生命周期的介 ...

  9. vue生命周期的介绍

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. 1.关于Python,你可能不知道的

    启示录 写在前面———— 至于python有多牛逼,这里不介绍了,安装也不说了,网上一堆一堆的安装教程. 本文只介绍需要知道的 常识知识———— 1.python 发音:英 [ˈpaɪθən] 美 [ ...

  2. 接口缓存--把接口放在redis数据库中,减少访问量

    针对访问量大,且数据较固定的接口,建议建立接口缓存,建立了缓存之后,不会再直接去访问接口了. 比如下面的轮播图接口,每刷新一下首页都会访问一下轮播图接口,所以我们用接口缓存来处理,减少访问量. 视图模 ...

  3. Codeforces Round #563 Div. 2

    A:显然排序即可. #include<bits/stdc++.h> using namespace std; #define ll long long #define inf 100000 ...

  4. Python之Django

    一.Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的框架模式,即模型M,视图V和模版T.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CM ...

  5. module 'cv2' has no attribute 'KNearest_create'

    python版本:3.6.5 opencv版本:3.2.0 使用的是jupyter notebook 源代码如下: import cv2 import numpy as np import matpl ...

  6. Java 之 递归

    一.概述 递归:指在当前方法内调用自己的现象. 递归的分类: 递归分为两种,直接递归和简介递归 直接递归称为方法自身调用自己 间接递归可以 A 方法调用 B 方法,B 方法调用 C 方法,C 方法调用 ...

  7. RZ70注册SLD

    本文的将S4 abap系统向PO JAVA系统中注册. S4 QASERPAP01 NR=60 ASCS=61 PO QASPISAP01 NR=60 SCS=61 http://qaspisap01 ...

  8. sql server动态分页

    USE RYPlatformManagerDB GO SET ANSI_NULLS, QUOTED_IDENTIFIER ON GO CREATE Proc [dbo].[WEB_PageView] ...

  9. vue-quill-editor + iview 实现富文本编辑器及图片上传

    1.npm 安装 vue-quill-editor npm install vue-quill-editor 2.再main.js中引入 import VueQuillEditor from 'vue ...

  10. HTML基础之HTML常用标签

    下面小编为大家整理一些HTML的常用标签 a.布局标签 div标签定义文档中的分区或节(division/section),可以把文档分割为独立的.不同的部分,主要用于布局. aside标签的内容可用 ...