zoukankan      html  css  js  c++  java
  • vue生命周期

    一、组件的生命周期

    1..1 组件的生命周期  

      1. Vue将组件看成是一个有生命的个体,跟人一样,定义了各个阶段,

      2. 组件的生命周期:组件的创建过程

      3. 组件生命周期钩子函数:当组件处在某个阶段,要执行某个方法,来通知我们,组件进入某个阶段,这个方法就是组件生命周期的钩子函数

      4. 组件的创建过程:这些方法在组件中直接定义,会按照顺序执行,没有参数,作用域都是组件实例化对象

    2、组件生命周期中依次执行的八个钩子函数

    <!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">
        <title>Title</title>
    </head>
    <body>
        <div id="app">
            <Home></Home>
        </div>
    
        <script src="vue.js"></script>
        <script>
            var Home = Vue.extend({
               template:"<h1>I am h1!! 显示变量: {{msg}}</h1>",
                data:function () {
                    return {
                        'msg':'I am msg'
                    }
                },
    
                // 方法1:组件实例被创建,组件属性计算之前,如data属性等
                 beforeCreate: function () {
                     console.log(111, this, arguments)
                 },
    
                // 方法2:组件实例创建完成,属性已经绑定,但DOM还未生成,$el 属性还不存在
                 created: function () {
                     console.log(222, this, arguments)
                 },
    
                // 方法3:模板编译/挂载之前
                 beforeMount: function () {
                     console.log(333, this, arguments)
                 },
    
                // 方法4:模板编译/挂载之后(不保证组件已在document中)
                 mounted: function () {
                     console.log(444, this, arguments)
                 },
    
    
                // 方法5:组件更新之前
                 beforeUpdate: function () {
                     console.log(555, this, arguments)
                 },
    
                // 方法6:组件更新之后
                 updated: function () {
                     console.log(666, this, arguments)
                 },
    
                 // 方法9:组件销毁前调用
                 beforeDestory: function () {
                     console.log(777, this, arguments)
                 },
    
                // 方法10:主键销毁后调用
                 destoryed: function () {
                     console.log(888, this, arguments)
                 },
    
    
                // 方法7:组件被激活时调用(用的少)
                // activated: function() {
                //     console.log(777, this, arguments)
                // },
    
                // 方法8:组件被移除时调用(用的少)
                // deactivated: function () {
                //     console.log(888, this, arguments)
                // },
    
    
    
    
            });
    
            Vue.component('home',Home);
    
            var app = new Vue({
                el:'#app',
                data:{
                    'isShow':true,
                }
            })
        </script>
    </body>
    </html>
    
    组件中八个钩子函数执行顺序
    vue钩子函数

    3、图片展示

     

    4、组件生命周期 常用的两个过程

          1)created: 实例已经创建完成,并且已经进行数据观测和事件配置

          2)mounted:模板编译之后,已经挂载,此时才会渲染页面,才能看到页面上数据的展示

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Vue生命周期</title>
        <script src="js/vue.js"></script>
        <script>
            window.onload=function(){
                let vm=new Vue({
                    el:'#itany',
                    data:{
                        msg:'welcome to itany'
                    },
                    methods:{
                        update(){
                            this.msg='欢迎来到南京网博!';
                        },
                        destroy(){
                            // this.$destroy();
                            vm.$destroy();
                        }
                    },
                    beforeCreate(){
                        alert('组件实例刚刚创建,还未进行数据观测和事件配置');
                    },
                    created(){  //常用!!!
                        alert('实例已经创建完成,并且已经进行数据观测和事件配置');
                    },
                    beforeMount(){
                        alert('模板编译之前,还没挂载');
                    },
                    mounted(){ //常用!!!
                        alert('模板编译之后,已经挂载,此时才会渲染页面,才能看到页面上数据的展示');
                    },
                    beforeUpdate(){
                        alert('组件更新之前');
                    },
                    updated(){
                        alert('组件更新之后');
                    },
                    beforeDestroy(){
                        alert('组件销毁之前');
                    },
                    destroyed(){
                        alert('组件销毁之后');
                    }
                });
            }
        </script>
    </head>
    <body>
        <div id="itany">
            {{msg}}
            <br>
    
            <button @click="update">更新数据</button>
            <button @click="destroy">销毁组件</button>
        </div>
    </body>
    </html>
    生命周期执行顺序 
    <template>
        <div>
            <button @click="get_all_info">点击获取数据</button>
            <router-link :to="{name:'HellowPP'}">跳转</router-link>
            <table border="1" >
                <tr>
                    <td>id</td>
                    <td>英雄</td>
                    <td>武功</td>
                    <td>性别</td>
                    <td>操作</td>
                </tr>
                <tr v-for = "hero in heros" > 
                    <td>{{ hero.name}}</td>
                    <td>{{ hero.kongfu}}</td>
                    <td>{{ hero.gender}}</td>
                    <td>{{ hero.habby}}</td> 
                     <!-- <td>操作</td>  -->
                </tr>
            </table>
        </div>
    </template>
    
    
    <script>
    import axios from 'axios'
    axios.defaults.baseURL='http://127.0.0.1:8090'
    // import { apiAddress } from '@/request/api';
    
    export default {
        name:"showbook",
        data (){
            return{
                heros : Array()
            }
            
        },
        methods: {
            get_all_info (){
                let self = this
                axios({
                    method: 'get',
                    url: '/a02/heros/' 
    
                }).then(function(res){
                    console.log(res.data.data.data)
                    self.heros = res.data.data.data
                })
            }
           
    
    
        },
            
        created(){this.get_all_info()},
    
    }
    </script>
    使用实例

     

  • 相关阅读:
    【codeforces 29B】Traffic Lights
    【codeforces 131E】Yet Another Task with Queens
    Java数据结构与算法(8)
    fdisk一键操作分区-无需脚本
    【codeforces 46C】Hamsters and Tigers
    【codeforces 417D】Cunning Gena
    【codeforces 95C】Volleyball
    【codeforces 229C】Triangles
    【codeforces 234F】Fence
    【codeforces 235B】Let's Play Osu!
  • 原文地址:https://www.cnblogs.com/ppzhang/p/11925086.html
Copyright © 2011-2022 走看看