Vue中如何通过Axios实现异步通信
前言——了解Vue实例的生命周期
下图展示了实例的生命周期。你不需要立马弄明白所有的东西,不过随着你的不断学习和使用,它的参考价值会越来越高。
引入Axios的CDN
<script type="text/javascript" src="https://unpkg.com/axios/dist/axios.min.js"></script>
Axios发送请求的模板
axios.get("请求url").then(function (response) {
// 正确之后需要如何处理
}).catch(function (error) {
// 错误之后需要如何处理
})
实践
创建一个json文件
{ "name": "LZP", "friendLink": "https://www.cnblogs.com/peng", "languages": ["Java", "C#", "Vue", "Python", "C++", "SQL"], "loves": [ { "杨过": "小龙女" }, { "郭靖": "黄蓉" }, { "张无忌": "赵敏" }, { "小福贵": "小飞蝶" } ] }
创建一个HTML文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>demo06_Vue组件</title> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script> <script type="text/javascript" src="https://unpkg.com/axios/dist/axios.min.js"></script> </head> <body> <!-- view层 模板 --> <div id="app"> <div>{{user.name}}</div> <div>{{user.friendLink}}</div> <ol> <li v-for="language in user.languages">{{language}}</li> </ol> <ul> <li v-for="love in user.loves">{{love}}</li> </ul> </div> <script type="text/javascript"> let vue = new Vue({ el: "#app", data() { return { // 这里user的属性要跟后台拿到的json数据中的属性对应 user: { name: null, friendLink: null, languages: null, loves: null } } }, mounted() { this.getUserInfo(); }, methods: { getUserInfo() { // 异步通信,发送get请求获取用户信息 // 钩子函数、箭头函数 axios.get("../vue-json.json").then(response => { this.user = response.data }).catch(error => { console.log(error) }); } } }); </script> </body> </html>
测试
在IDEA中通过Firefox浏览器打开,页面效果如下:
总结
为了实现Axios与后端的异步通信(当然这里我们只是模拟,数据是前端的测试数据哈),我们是利用Axios发送get请求(post也行),然后通过Vue实例的生命周期中的mounted()钩子函数去调用我们在methods中封装好的getUserInfo()函数,并拿到json文件中的数据最后显示到前端页面中