Vue.js

生命周期钩子

1 beforeCreate
在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。


2 create
在实例创建完成后被立即调用。
数据观测 (data observer),property 和方法的运算,watch/event 事件回调,都已完成。
挂载阶段还没开始,$el property 目前尚不可用。


3 beforeMount
在挂载开始之前被调用:相关的 render 函数首次被调用。
该钩子在服务器端渲染期间不被调用。


4 mount
实例被挂载后调用,这时 el 被新创建的 vm.$el 替换了。

如果根实例挂载到了一个文档内的元素上,当 mounted 被调用时 vm.$el 也在文档内。

mounted 不会保证所有的子组件也都一起被挂载。

若希望等到整个视图都渲染完毕,可以在 mounted 内部使用 vm.$nextTick:
 

该钩子在服务器端渲染期间不被调用。

5 beforeUpdate
数据更新时调用,发生在虚拟 DOM 打补丁之前。
该钩子在服务器端渲染期间不被调用,因为只有初次渲染会在服务端进行。


6 update
数据更改之后导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。

当此钩子被调用时,组件 DOM 已经更新,所以可以执行依赖于 DOM 的操作。

updated 不会保证所有的子组件也都一起被重绘。

若希望等到整个视图都重绘完毕,可以在 updated 里使用 vm.$nextTick:

该钩子在服务器端渲染期间不被调用。

7 activted
被 keep-alive 缓存的组件激活时调用。
该钩子在服务器端渲染期间不被调用。


8 deactivated
被 keep-alive 缓存的组件停用时调用。
该钩子在服务器端渲染期间不被调用。


9 beforeDestroy
实例销毁之前调用。
在这一步,实例仍然完全可用。
该钩子在服务器端渲染期间不被调用。


10 destroy
实例销毁后调用。
该钩子被调用后,对应 Vue 实例变化:
所有指令都被解绑。
所有的事件监听器被移除。
所有的子实例也都被销毁。
该钩子在服务器端渲染期间不被调用。


11 errorCaptured
类型:(err: Error, vm: Component, info: string) => ?boolean

此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。
当捕获一个来自子孙组件的错误时被调用。

此钩子可以返回 false 以阻止该错误继续向上传播。

数组侦听

div id="app">
        <button @click="list.push('真爱芬')">添加</button>
        <button @click="list.pop()">删除</button>
        <!-- 利用索引改变数组时 不能被侦听到 -->
        <!-- <button @click="list[0] = '修猫' ">修改第一个</button>
        <button @click="list.splic(1,0,'假爱芬')">第二项添加</button> -->
        <ul>
            <li v-for="item in list">
                {{ item }}
            </li>
        </ul>
    </div>
    <script src="./vue.js"></script>
    <script>
        new Vue({
            el:'#app',
            data:{
                list:['ikun','kkun','zhenikun','jiaikun']
            },
            watch:{
                // 复杂数据类型 这两个参数没有意义 因为地址没变
                // 所以复杂类型中 一般不会写这两个参数 这两个参数的值是一样的
            list(newVal,oldVal){
                console.log('数组改变了',oldVal,newVal);
            }}
        })
        // 在数组中使用侦听器:
        // 彻底替换为一个新数组 可以被侦听到
        // 使用了push()等标准的数组操作方法 可以被侦听到
        // 直接修改了数组的元素 无法被侦听到
        // 解决方法:使用$set()方法修改元素的值,
        // 不要使用length属性修改数组长度,而改用其他标准方法显示数组长度的变化
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值