Vue 使用Ajax異步或同步的方法
一、使用Axios動態(tài)加載員工列表數(shù)據(jù)
1、運行頁面效果

2、單擊查詢顯示所有的數(shù)據(jù)

3、 再通過姓名,性別,職位分別查詢數(shù)據(jù)



4、單擊清空按鈕,查詢字段恢復(fù)原來狀態(tài),那就是顯示所有的數(shù)據(jù)

5、JS代碼片段
<!-- 引入axios.js -->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script type="module">
import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'
createApp({
data() {
return {
findForm: {
name: '',
gender: '',
position: ''
},
users: [] // 用于存儲查詢結(jié)果的用戶數(shù)據(jù)數(shù)組
};
},
methods: {
showMessage() {
// 這里可以添加實際的查詢邏輯
axios.get(`https://webserver.ma.net/emps/list?name=${this.findForm.name}&gender=${this.findForm.gender}&job=${this.findForm.position}`)
.then(response => {
this.users = response.data.data;
})
.catch(error => {
console.error('查詢用戶數(shù)據(jù)失敗:', error);
})
},
// 清空查詢表單
clearForm() {
this.findForm = {
name: '',
gender: '',
position: '',
}
this.showMessage(); // 清空后重新查詢,獲取所有用戶數(shù)據(jù)
}
}
}).mount('#app');
</script>說明:使用axios中提供的.then(function(){....}).catch(function(){....}),這種回調(diào)函數(shù)的寫法,會使得代碼的可讀性和維護性變差。
解決:可以通過async、await可以讓異步變?yōu)橥讲僮?/strong>
async:聲明一個異步方法,await:等待異步任務(wù)執(zhí)行。
如下操作:(代碼修改后就變成同步操作了,也就是從前往后一行一行執(zhí)行。)
methods: {
async showMessage() {
// 這里可以添加實際的查詢邏輯
let response= await axios.get(`https://webserver.ma.net/emps/list?name=${this.findForm.name}&gender=${this.findForm.gender}&job=${this.findForm.position}`)
this.users = response.data.data;
},注意:await關(guān)鍵字只在async函數(shù)內(nèi)有效,await關(guān)鍵字取代then函數(shù),等待獲取到請求成功的結(jié)果值
二、Vue生命周期
1、它是vue對象從創(chuàng)建到銷毀的過程
2、它的8個階段:
每觸發(fā)一個生命周期事件,會自動執(zhí)行一個生命周期方法,這些生命周期方法也被稱為鉤子方法。
| 生命周期階段 | 鉤子函數(shù) | 觸發(fā)時機 | 典型應(yīng)用場景 |
|---|---|---|---|
| 創(chuàng)建階段 | beforeCreate | 實例初始化后,數(shù)據(jù)觀測/事件配置前 | 插件初始化、非響應(yīng)式變量設(shè)置 |
| created | 實例創(chuàng)建完成(數(shù)據(jù)觀測/方法可用,DOM未生成) | 異步請求數(shù)據(jù)、初始化非DOM相關(guān)操作 | |
| 掛載階段 | beforeMount | 模板編譯完成,虛擬DOM已創(chuàng)建但未渲染 | 最后修改渲染數(shù)據(jù)(不會觸發(fā)重新渲染) |
| mounted | 實例掛載到真實DOM后 | 操作真實DOM、初始化第三方庫(如ECharts) | |
| 更新階段 | beforeUpdate | 數(shù)據(jù)變化后,虛擬DOM重新渲染前 | 獲取更新前的DOM狀態(tài)(慎改數(shù)據(jù)) |
| updated | 虛擬DOM重新渲染并應(yīng)用更新后 | 依賴新DOM的操作(如調(diào)整插件尺寸) | |
| 銷毀階段 | beforeDestroy | 實例銷毀前(仍完整可用) | 清除定時器、解綁事件、銷毀全局監(jiān)聽 |
| destroyed | 實例銷毀后(所有綁定和子實例已移除) | 釋放非Vue管理的資源(如手動創(chuàng)建的DOM事件) |
生命周期圖示:

mounted:掛載完成,Vue初始化成功,HTML頁面渲染成功。
一般用于頁面初始化自動的ajax請求后臺數(shù)據(jù)
如果想在頁面加載完畢,就能列出所有員工數(shù)據(jù),就可以在mounted鉤子函數(shù)中,發(fā)送異步請求查詢員工數(shù)據(jù)了。
methods: {
async showMessage() {
// 這里可以添加實際的查詢邏輯
let response= await axios.get(`https://webserver.ma.net/emps/list?name=${this.findForm.name}&gender=${this.findForm.gender}&job=${this.findForm.position}`)
this.users = response.data.data;
},
// 清空查詢表單
clearForm() {
this.findForm = {
name: '',
gender: '',
position: '',
}
this.showMessage(); // 清空后重新查詢,獲取所有用戶數(shù)據(jù)
}
},
mounted() {
this.showMessage(); // 頁面加載完成后,自動查詢所有用戶數(shù)據(jù)
}運行:

到此這篇關(guān)于Vue 使用Ajax異步或同步的文章就介紹到這了,更多相關(guān)Vue Ajax異步或同步內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
從0到1構(gòu)建vueSSR項目之node以及vue-cli3的配置
這篇文章主要介紹了從0到1構(gòu)建vueSSR項目之node以及vue-cli3的配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03
解決echarts vue數(shù)據(jù)更新,視圖不更新問題(echarts嵌在vue彈框中)
這篇文章主要介紹了解決echarts vue數(shù)據(jù)更新,視圖不更新問題(echarts嵌在vue彈框中),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Element-Plus表格實現(xiàn)Table自定義合并行數(shù)據(jù)
在開發(fā)項目中,我們時常會用到表格,許多需求可能會要求自定義特定的行或列,下面就跟隨小編一起來學習一下在實際開發(fā)中如何實現(xiàn)這一要求吧2024-12-12
Vue技巧Element Table二次封裝實戰(zhàn)示例
這篇文章主要為大家介紹了Vue技巧Element Table二次封裝實戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
Vue+thinkphp5.1+axios實現(xiàn)文件上傳
這篇文章主要為大家詳細介紹了Vue+thinkphp5.1+axios實現(xiàn)文件上傳,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-05-05

