Vue.js--笔记三(生命周期钩子)

先上一张官网生命钩子图例

明确生命周期钩子的意义:同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。(官网照搬)

贴一段自己测试的示例

<!DOCTYPE html>
<html>
    <head>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    </head>
    <body>
        <div id = "app">
            v-modelInput:<input v-model = "pre_value"/><br/>
            v-bindInput:<input :value = "pre_value"/><br/>
            v-onInput:<input @click = "pre_function" type = "button" value = "点击触发pre_function函数"/><br/>

            <input type = "button" value = "$销毁" onclick = "df()"/>
            <input type = "button" value = "$挂载" onclick = "mf()"/>
        </div>
    </body>
</html>
<script>

    var app_vm = new Vue({
            el: '#app',
            data : {
                pre_value : 'Hi Vue!',
            },
            methods : {
                pre_function : function (){window.alert('Hi pre_function~~')}
            },
            beforeCreate : () => {
                                    console.log('beforeCreate_process');
                                 },//创建实例前,
            created : () => {
                                console.log('created_process');
                            },//创建实例后
            beforeMount : () => {
                                    console.log('beforeMount_process');
                                },//挂载前
            mounted : () => {
                                console.log('mounted_process');
                            },//挂载后
            beforeUpdate : () => {
                                    console.log('beforeUpdate_process');
                                 },//数据修改前
            updated : () => {
                              console.log('updated_process');
                            },//数据修改后
            beforeDestroy : () => {
                                    console.log('beforeDestroy_process');
                                  },//vm对象销毁前
            destroyed : () => {
                                console.log('destroyed_process');
                              }//vm对象销毁后
        });
        //
        var df = () => {
                            app_vm.$destroy();
                        };//销毁
        var uf = () => {
                            app_vm.$forceUpdate();
                        };//强制更新
        var mf = () => {
                            app_vm.$mount();
                        };//挂载
</script>

页面刚初始化时候的控制台(证明触发了beforeCreate,created,beforeMount,mounted四个钩子)


点击销毁按钮后(证明触发了beforeDestroy,destroyed两个钩子,并且无论点击多少次都不会再次触发beforeDestroy,destroyed钩子),注意最初的官网贴图,vm.$destroy()造成的影响是

1.解除绑定:解除的是谁的绑定?是vm对象与dom对象之间的绑定(eg:解除绑定后v-bindInput中的值不会再随着v-modelInput中的值的改变而改变)

2.销毁子组件(PlaceHolder!!!)

3.销毁事件监听(eg:无论点击多少次都不会再次触发beforeDestroy,destroyed钩子)

备注:vm.$destroy()并不会把已渲染的dom销毁掉(此时一定要紧抠'解除绑定'四字真言)


[未点击销毁按钮]点击挂载按钮后(证明触发了beforeMount,mounted两个钩子)

[已点击销毁按钮]点击挂载按钮后(证明触发了beforeMount,mounted两个钩子),随后v-modelInput中值时不再触发beforeUpdate,updated两个钩子

同注意最初的官网贴图,vm.$mount()造成的影响是

1.虚拟DOM重新渲染并应用更新


总结:根据官网生命周期钩子示例,当外部额外调用vm.$mount()或vm.$destroy()时,并非会彼此造成影响(不要误认为vm.$destroy()销毁后便无法再进行vm.$mount()挂载),初学Vue,如有不对之处,欢迎大家评论指出~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值