十、Vue Router 进阶-获取数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了十、Vue Router 进阶-获取数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1699字,纯文字阅读大概需要3分钟。
内容图文
获取数据的两种方式
-
导航完成之后获取数据:先完成导航,然后在接下来的组件生命周期钩子
created
中获取数据。在数据获取期间展示一个loading
加载中的状态提示。 -
导航完成之前获取:导航完成前,在路由进入的守卫中获取数据,在数据获取成功后执行导航。
导航完成之后获取数据(可展示loading)
在组件的created
钩子中获取数据。在获取数据期间展示一个loading
状态,可以在不同视图间展示不同的loading
状态。
<template>
<div class="post">
<div class="loading" v-if="loading">Loading...</div>
<div class="error" v-if="error">{{ error }}</div>
<div class="content" v-if="post">
<h2>{{ post.title }}</h2>
<p>{{ post.body }}</p>
</div>
</div>
</template>
<script>
export default {
data() {
return {
loading: false,
post: null,
error:null
}
},
created () {
// 组件创建完成后获取数据
this.fetchData();
},
watch: {
// 路由发生变化,会再次执行该方法
"$route": 'fetchData'
},
methods: {
fetchData () {
this.error = this.post = null;
this.loading = true
// 发送请求 - 获取动态数据
getPost(this.$route.params.id, (err, post) => {
this.loading = false;
if(err){
this.error = err.toString();
}else{
this.post = post;
}
});
}
}
}
</script>
在导航前获取数据(不能添加loading提示)
在导航转入新的路由前获取数据,可以在组件的beforeRouteEnter
守卫中获取数据,当数据获取成功之后调用next
方法进入页面。当页面导航变化时,在beforeRouteUpdate
钩子函数获取数据。
<script>
export default {
data() {
return {
post: null,
error: null
}
},
beforeRouteEnter (to, from, next) {
// 在确定进入路由之前获取数据,当数据获取成功则确定进入路由
getPost(to.params.id, (err, post) => {
next(vm => vm.setData(err, post));
});
},
// 路由更新时重新获取数据
beforeRouteUpdate(to, from, next) {
this.post = null;
getPost(to.params.id, (err, post) => {
this.setData(err, post);
next();
});
},
methods: {
setData (err, post) {
if(err) {
this.error = err.toString();
}else{
this.post = post;
}
}
}
}
</script>
原文:https://www.cnblogs.com/yuxi2018/p/11967285.html
内容总结
以上是互联网集市为您收集整理的十、Vue Router 进阶-获取数据全部内容,希望文章能够帮你解决十、Vue Router 进阶-获取数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。