Bootstrap

生命周期,vue中的axios,ref引用($refs),$nextTick

生命周期

组件从创建到销毁的整个过程就是生命周期

在这里插入图片描述

钩子函数

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

作用:特定的时间 执行特定的操作

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

分为4大阶段
创建

在这里插入图片描述

new Vue() vue实例化(组件是一个小的vue实例)
init event  Lifecycle  初始化事件和生命周期函数
beforeCreate  生命周期函数被执行
init injections   vue内部添加data和methods
created   生命周期函数被执行  实例创建
Has el option 是否有el选项  检查要挂到哪里
   有   继续检查template选项
   没有  调用$mount方法
  • beforeCreate
  • created
挂载

在这里插入图片描述

template选项检查
有 --编译template返回render渲染函数
没有 编译el选项对应标签作为template 要渲染的模板
虚拟DOM挂载成真实Dom之前
beforeMount 生命周期钩子函数
把虚拟DOM和渲染的数据一并挂到真实Dom上
真实dom挂载完毕
mounted生命周期钩子函数
  • beforeMount
  • mounted
更新

在这里插入图片描述

data里数据改变,更新Dom之前
beforeUpdate  生命周期钩子函数
Virtual Dom 虚拟DOM重新渲染 打补丁到真实Dom
updated 生命周期钩子函数
当有data数据改变 重复这个循环
  • beforeUpdate
  • updated
销毁

在这里插入图片描述

当$destroy()被调用  比如组件DOM被移除(v-if)
beforeDestroy  生命周期钩子函数
拆卸数据监听器,子组件,和事件侦听器
实例销毁后触发最后一个钩子函数
destroyed 生命周期钩子函数
  • beforeDestroy
  • destroyed

vue中axios的使用

  • 安装

    npm install axios
    
  • 使用

    <template>
      <div>
        <p>获取所有的图书信息</p>
        <button @click="getAllFn">点击 --查看</button>
      </div>
    </template>
    
    <script>
    // 下载axios
    // 引入axios
    // 发起axios请求
    import axios from 'axios'
    export default {
      methods: {
        // getAllFn() {
        //   axios({
        //     url: 'http://www.liulongbin.top:3006/api/getbooks',
        //     method: 'GET',
        //   }).then((res) => {
        //     console.log(res)
        //   })
        // },
        async getAllFn() {
          let res = await axios.get('http://www.liulongbin.top:3006/api/getbooks')
          console.log(res)
        },
      },
    }
    </script>
    
axios全局配置

目标: url的前缀统一设置

// main.js

import axios from 'axios'

axios.defaults.baseURL = 'http://www.liulongbin.top:3006';

// 挂载到Vue原型上  任何一个组件都可以调用Vue原型上的$axios属性
Vue.prototype.$axios = axios

组件中

<script>
export default {
  created() {
    this.getdata()
  },
  methods: {
    async getdata() {
      let res = await this.$axios.get('/api/getbooks')
      console.log(res)
    },
  },
}
</script>

$refs

获取DOM和子组件

利用ref和$refs可以用于获取DOM元素

语法

ref定义值,通过$refs.值来获取原生dom元素

ref定义值,通过$refs.值来获取组件对象,就能继续调用组件内的变量

<template>
  <div>
    <p>获取原生dom元素</p>
    <h1 id="h" ref
;