生命周期与钩子函数
生命周期介绍
- vue生命周期钩子函数
- 简单说:一个实例从开始到最后消亡所经历的各种状态,就是一个实例的生命周期
生命周期图解
非常重要的图解
实例生命周期函数的定义:从组件被创建,到组件挂载到页面上运行,再到页面关闭组件被卸载,这三个阶段总是伴随着组件各种各样的事件,那么这些事件,统称为组件的生命周期函数!
- 生命周期的钩子函数:框架提供的函数,能够让开发人员的代码,参与到组件的生命周期中。也就是说,通过钩子函数,就可以控制组件的行为
- 注意:vue再执行过程中会自动调用
生命周期钩子函数
,我们只需要提供这些钩子函数即可 - 注意:钩子函数的名称都是固定的!!!
钩子函数 - beforeCreate()
- 说明:在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用
- 注意:此时,无法获取 data中的数据、methods中的方法
钩子函数 - created()
- 注意:这是一个常用的生命周期,可以调用methods中的方法、改变data中的数据
- vue实例生命周期 参考1
- vue实例生命周期 参考2
- 使用场景:发送请求获取数据
钩子函数 - beforeMounted()
- 说明:在挂载开始之前被调用
钩子函数 - mounted()
- 说明:此时,vue实例已经挂载到页面中,可以获取到el中的DOM元素,进行DOM操作
钩子函数 - beforeUpdated()
- 说明:数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。
钩子函数 - updated()
- 说明:组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。
钩子函数 - beforeDestroy()
- 说明:实例销毁之前调用。在这一步,实例仍然完全可用。
- 使用场景:实例销毁之前,执行清理任务,比如:清除定时器等
钩子函数 - destroyed()
- 说明:Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。
JSON-SERVER的使用
在不到30秒的时间内获得零编码的完整虚假REST API
全局安装
两个方法:
yarn global add json-server
或者
npm i json-server -g
提供一个json文件
{
"todos": [
{ "id":1, "name": "吃饭", "flag": false },
{ "id":2, "name": "抽烟", "flag": true },
{ "id":3, "name": "喝酒", "flag": false },
{ "id":4, "name": "烫头", "flag": true }
]
}
启动接口服务
json-server data.json
特点
JSON-server给我们生成的一个rest风格的接口
查询:get http://localhost:3000/todos 获取所有的任务
http://localhost:3000/todos/3 获取id为3的任务
增加:post http://localhost:3000/todos 增加
删除:delete http://localhost:3000/todos/3
修改: put : 全量的修改,会把原来的所有内容个都覆盖掉, 需要改不需要改都应该传
patch : 打补丁,只会修改传递的值
axios
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
vue1.x的时候vue提供了一个包,vue-resource 专门用于发送ajax请求,但是vue2.x的时候,vue的作者的自己发了一个文章,推荐大家都使用axios库来发送ajax请求。
vue自身没有提供发送ajax请求的工具
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
- Promise based HTTP client for the browser and node.js
- 以Promise为基础的HTTP客户端,适用于:浏览器和node.js
- 封装ajax,用来发送请求,异步获取数据
- 安装:
npm i -S axios
- axios github
todomvc-axios版本
此案例的源文件压缩包已经上传至资源,文件名叫:todos-axios版本(此文件只做了增,删,改 3个功能).zip