从VueJS中的api获取数据时如何添加加载器? [复制]
Posted
技术标签:
【中文标题】从VueJS中的api获取数据时如何添加加载器? [复制]【英文标题】:How to add loader when data is fetched from api in VueJS? [duplicate] 【发布时间】:2021-04-15 22:21:22 【问题描述】:我创建了一个 VueJS/Vuex 应用程序来从 API 获取数据并将这些数据显示在另一个页面上,
本站的逻辑是用户点击按钮获取first
页面上的数据但是这个数据必须显示在另一个页面上,
这是我的代码:
data.js
import axios from 'axios';
const state =
data: ''
;
const getters =
getData: (state) =>
return state.data;
;
const actions =
async fetchData( commit , id )
const response = await axios.get(`http://someUrl?id=$id`);
console.log(response.data);
commit('setData', response.data);
const mutations =
setData: (state, data) => (state.data = data)
export default
state, getters, actions, mutations
我要获取此数据的 Vue 文件:
<script>
import FooterComponent from "@/components/Footers/Footer.vue";
import mapGetters, mapActions from 'vuex';
export default
data()
return
id: ""
,
name: "Index",
methods:
...mapActions(["fetchData"]),
launchFetchData()
this.fetchData( id: this.id)
this.$router.push("login");
,
computed: mapGetters(["getData"])
</script>
那么,如何通过状态检查数据是否已正确下载,以及如何在数据已正确下载后重定向到相应的页面?以及如何在数据下载时添加简单的loader?
感谢您的帮助
【问题讨论】:
【参考方案1】:我不确定,但你能试试这个吗?
<script>
import FooterComponent from "@/components/Footers/Footer.vue";
import mapGetters, mapActions from 'vuex';
export default
data()
return
id: "",
data: null
,
name: "Index",
methods:
launchFetchData()
try
...mapActions(["fetchData"]),
this.fetchData( id: this.id)
this.data = mapGetters(["getData"])
this.$router.push("login");
catch (error)
console.log(error)
,
mounted()
this.launchFetchData()
</script>
【讨论】:
我还添加了 trycatch 语法,以确保出现错误时不会被重定向。所以错误会显示在控制台中。以上是关于从VueJS中的api获取数据时如何添加加载器? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在单页应用程序中,当在 VueJs 中输入新数据时,如何在不重新加载页面的情况下重新加载 api [关闭]
如何使用 VueJS 和 axios 将从 API 获取的数据填充到 Laravel 中的选择选项中?
如何将数组数据从 vuejs 传递到 laravel api 控制器
无法使用 api 从 axios 获取数据 - vue js