目录​​​​​​​

一、钩子函数

1.钩子函数-初始化阶段

2.钩子函数-挂载阶段

3.钩子函数-更新阶段

4.钩子函数-销毁阶段

5.常用的钩子函数

二、axios

1.请求数据

2.查询数据

3.配置全局基地址

三、组件进阶

1.$refs

2.$refs

3. refs案例---输入框聚焦


一、钩子函数

Vue 框架内置函数,随着组件的生命周期阶段,自动执行

⚫ 作用: 特定的时间点,执行特定的操作

⚫ 场景: 组件创建完毕后,可以在created 生命周期函数中发起Ajax 请求,从而初始化 data 数

⚫ 分类: 4大阶段8个方法

1.钩子函数-初始化阶段

⚫beforeCreate():new Vue()之后,vue内部给实例对象添加了一些属性和方法,data和methods初始化之前

⚫create():data和methods初始化之后

使用场景:网络请求,注册全局事件:页面滚动

<template><div><p>学习生命周期 - 看控制台打印</p><p>{{ msg }}</p></div>
</template><script>
export default {data() {return {msg: "hello vue",};},// 一、初始化// new Vue()之后,vue内部给实例对象添加了一些属性和方法,data和methods初始化之前beforeCreate() {console.log("beforeCreate --- 执行");console.log(this.msg); //undefined},//data和methods初始化之后
//使用场景:网络请求,注册全局事件:页面滚动created() {console.log("create --- 执行");console.log(this.msg); //hello vue},methods: {},
};
</script><style lang="scss" scoped></style>

2.钩子函数-挂载阶段

⚫beforeMount()挂载  真实DOM挂载之前,拿不到真实DOM

场景:预处理data,不会触发updated钩子函数

⚫mounted() 真实DOM挂载之后,拿到真实DOM

场景:挂载后真是DOM

  beforeMount() {console.log("beforeMounte --- 执行");// console.log(document.getElementById("myP")); //null},mounted() {console.log("mounted --- 执行");// console.log(document.getElementById("myP")); //<p data-v-07b77a01 id="myP">hello vue</p>},

3.钩子函数-更新阶段

⚫beforeUpdate()当data里数据改变, 更新DOM之前

⚫updated()当数据发生变化并更新页面后,获取最新的真实DOM

<template><div><ul id="myUL"><li v-for="(val, index) in arr" :key="index">{{ val }}</li></ul><button @click="arr.push(100)">数组添加末尾值</button></div>
</template>
<script>
export default {data() {return {arr: [1, 2, 3, 4],};},beforeUpdate() {console.log("beforeUpate -- 执行"); //第一次点击button按钮,此语句执行,但是获取不到第四个liconsole.log(document.querySelectorAll("#myUL>li")[4]); //undefined},updated() {console.log("updated -- 执行"); //第一次点击button按钮,此语句执行,获取第四个liconsole.log(document.querySelectorAll("#myUL>li")[4]); //<li data-v-07b77a01="">100</li>},};
</script>

4.钩子函数-销毁阶段

⚫前提:v-if="false" 销毁Vue实例

⚫场景:移除全局事件,移除当前组件的计时器、定时器(因为即使当前组件被销毁,定时器仍然会一直执行)、eventBus移除事件$off方法

<template><div><life v-if="show"></life><button @click="show = false">销毁</button></div>
</template>
<script>
export default {data() {return {timer: "",};},beforeDestroy() {console.log(" beforeDestroy -- 执行");clearInterval(this.timer)//销毁life后将不再执行定时器},destroyed() {console.log(" destroyed -- 执行");},
};
</script>

5.常用的钩子函数

⚫created可以在此阶段获取data中的数据以及发送接口请求

⚫mounted在此阶段获取DOM元素,echars图标

⚫beforeDestroy在此阶段移除页面定时器和事件监听

二、axios

1.请求数据

使用async-awiat

<template><div><div><h1>获取图书数据</h1><button @click.prevent="getBooks">点击获取</button></div></div>
</template><script>
import axios from "axios";
export default {data() {return {};},methods: {async getBooks() {// axios({//   url: "http://liulongbin.top:3006/api/getbooks",//   // methods:"get"// }).then(res=>{//   console.log(res);// });const res = await axios({url: "http://liulongbin.top:3006/api/getbooks",})console.log(res);},},
};
</script><style lang="scss" scoped></style>

2.查询数据

<template><div><div><h1>2-查询某本书的信息</h1><input type="text" placeholder="请输入书名" v-model="bName" /><button @click="findFn">查询</button></div></div>
</template>
export default {methods: {async findFn() {const res = await axios({url: "/api/getbooks",params: {bookname: this.bName,},});console.log(res);},
};
</script>

3.配置全局基地址

import axios from "axios";

axios.defaults.baseURL = "基地址";

import axios from "axios";
axios.defaults.baseURL = "http://liulongbin.top:3006";
export default {methods: {async getBooks() {// axios({//   url: "http://liulongbin.top:3006/api/getbooks",//   // methods:"get"// }).then(res=>{//   console.log(res);// });const res = await axios({url: "/api/getbooks",});console.log(res);},},
};
</script>

三、组件进阶

1.$refs

子组件

<template><div><h1 ref="myH">这是一个P标签</h1></div>
</template><script>
export default {data() {return {num:1};},methods: {fn(){console.log("子组件的方法被调用");}},
};
</script>

父组件

<template><div><child ref="myChild"></child></div>
</template><script>
import child from "./components/child.vue";
export default {components: {child,},mounted() {this.$refs.myChild.fn();console.log(this.$refs.myChild.num);},
};
</script>

控制台打印

2.$refs

<template><div><div><h1>6-vue更新DOM是异步的</h1><p ref="c">{{ count }}</p><button @click="add">点击count++</button></div></div>
</template>
<script>export default {data() {return {count: 0,};},methods: {add() {this.count++; //vue检测数据更新是异步的,开启一个DOM更新队列(异步任务)console.log(this.$refs.c.innerHTML);//第一次点击为0},},
};
</script>

 原因:vue更新DOM是异步的

 解决:await this.$nextTick();

过程:DOM更新完会依次触发$nextTick里的函数体

方法一

this.$nextTick(() => console.log(this.$refs.c.innerHTML)); //第一次点击为1

方法二

methods: {async clickFn() {this.count++;await this.$nextTick();console.log(this.$refs.myP.innerHTML);},},

3. refs案例---输入框聚焦

<template><div><input type="text" placeholder="输入框" v-if="show" ref="myInp" /><button v-else @click="btn">点击搜索</button></div>
</template><script>
// 需求:点击按钮输入框显示并聚焦,按钮隐藏
export default {data() {return {show: false,};},methods: {async  btn() {this.show = true;// this.$refs.myInp.focus()  报错// 原因:data变化更新DOM是异步的// 输入框还没有挂载到真实DOM上// 解决:// 方法一// this.$nextTick(() => {//   this.$refs.myInp.focus();// });// 方法二await this.$nextTick();this.$refs.myInp.focus();},},
};
</script><style lang="scss" scoped></style>

生命周期_axios相关推荐

  1. 前端进阶_狂神Vue笔记_语法指令v-bind、v-on、v-for_表单双绑_组件_Axios异步通信_Vue的生命周期_计算属性_插槽 <slot>_webpack使用_vue-router路由

    四.第一个Vue程序 4.1.什么是MVVM MVVM(Model-View-ViewModel)是一种软件设计模式,由微软WPF(用于替代WinForm,以前就是用这个技术开发桌面应用程序的)和Si ...

  2. LTV 即用户生命周期价值

    20220321 https://mp.weixin.qq.com/s/kPoojfRCbvCCV4zpnCimmQ 指标计算详细介绍 数据分析|如何做好用户生命周期价值分析 LTV https:// ...

  3. Harmony生命周期

    Harmony生命周期 系统管理或用户操作等行为,均会引起Page实例在其生命周期的不同状态之间进行转换.Ability类提供的回调机制能够让Page及时感知外界变化,从而正确地应对状态变化(比如释放 ...

  4. Activity在有Dialog时按Home键的生命周期

    当一个Activity弹出Dialog对话框时,程序的生命周期依然是onCreate() - onStart() - onResume(),在弹出Dialog的时候并没有onPause()和onSto ...

  5. 横竖屏切换时Activity的生命周期

    1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏执行一次,切竖屏执行两次. 2.设置Activity的android:configChang ...

  6. Android中Service生命周期、启动、绑定、混合使用

    一.Activity和Service如何绑定: 1.Service和Activity之间的连接可以用ServiceConnection来实现.实现一个ServiceConnection对象实例,重写o ...

  7. Cocos生命周期回调

    Cocos Creator 为组件脚本提供了生命周期的回调函数.用户只要定义特定的回调函数,Creator 就会在特定的时期自动执行相关脚本,用户不需要手工调用它们. 目前提供给用户的生命周期回调函数 ...

  8. Fragment 使用 replace 的方式实现切换 以及切换的时候Fragment 生命周期

    这个主要代码在activity里面 如下 public class ReplaceActivity extends AppCompatActivity implements View.OnClickL ...

  9. Fragment 使用 show 和 hide 的方式实现切换 以及切换的时候Fragment 生命周期

    实现的效果如下图 主要的代码在activity 这里贴出来了 public class ShowActvity extends AppCompatActivity implements View.On ...

最新文章

  1. 高精度运算(C++实现)
  2. C# 实现将 PDF 转文本的功能
  3. linux环境下c回车,linux_C 让 getchar()不再需要回车
  4. nagios监控slave(借助脚本)
  5. android本地gradle地址,android gradle本地路径不存在
  6. [转]jQuery: how to get which button was clicked upon form submission?
  7. Elasticsearch mysql 增量同步
  8. php 字符如何与16进制数比较大小
  9. Windows CE如何根据文件名获取其对应文件图标icon
  10. GlobalMapper20提取点位的高程信息
  11. 解决全网 99的视频下载问题
  12. 给ImageView做圆角处理
  13. Azure NSG Flow Log 引发的自嗨 -- 日志 ETL 流式处理
  14. 对金融基础知识的小总结
  15. 加州大学欧文分校 计算机专业,加州大学欧文分校计算机专业申请条件(附案例)...
  16. Mockplus的组件(弹出菜单)的简单使用方法。
  17. android 环信客服修改自己的头像
  18. 基于STM32的ESP8266使用教程(二)
  19. 【第4期-智能驾驶汽车系列术语概念解析】第5节:龙格现象
  20. SQLServer 时间段分隔,时间段查询,查询时间段内的数据

热门文章

  1. 浅聊古代————汉朝
  2. matlab示波器导出图片,MATLAB SIMULINK 示波器 SCOPE 图片保存
  3. 【Matlab】多元线性回归
  4. 手机短信真的可信吗# 传统短信伪造攻击的可能性证明
  5. 带联网功能的RFID宿舍门禁(六)-两年后的再次总结
  6. 无穷项和求极限(夹逼准则)
  7. 水下图像增强本科毕业设计帮助思路
  8. Android 信号查看,安卓Android手机怎么快速查看系统信号强度
  9. 网易服务器修改权限等级,网易企业邮箱新增“管理员权限分级”功能
  10. java dsa算法_DSA算法