Vue 使用Ajax異步或同步的方法
一、使用Axios動(dòng)態(tài)加載員工列表數(shù)據(jù)
1、運(yùn)行頁面效果
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: [] // 用于存儲(chǔ)查詢結(jié)果的用戶數(shù)據(jù)數(shù)組 }; }, methods: { showMessage() { // 這里可以添加實(shí)際的查詢邏輯 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ù)的寫法,會(huì)使得代碼的可讀性和維護(hù)性變差。
解決:可以通過async、await可以讓異步變?yōu)橥讲僮?/strong>
async:聲明一個(gè)異步方法,await:等待異步任務(wù)執(zhí)行。
如下操作:(代碼修改后就變成同步操作了,也就是從前往后一行一行執(zhí)行。)
methods: { async showMessage() { // 這里可以添加實(shí)際的查詢邏輯 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個(gè)階段:
每觸發(fā)一個(gè)生命周期事件,會(huì)自動(dòng)執(zhí)行一個(gè)生命周期方法,這些生命周期方法也被稱為鉤子方法。
生命周期階段 | 鉤子函數(shù) | 觸發(fā)時(shí)機(jī) | 典型應(yīng)用場景 |
---|---|---|---|
創(chuàng)建階段 | beforeCreate | 實(shí)例初始化后,數(shù)據(jù)觀測/事件配置前 | 插件初始化、非響應(yīng)式變量設(shè)置 |
created | 實(shí)例創(chuàng)建完成(數(shù)據(jù)觀測/方法可用,DOM未生成) | 異步請求數(shù)據(jù)、初始化非DOM相關(guān)操作 | |
掛載階段 | beforeMount | 模板編譯完成,虛擬DOM已創(chuàng)建但未渲染 | 最后修改渲染數(shù)據(jù)(不會(huì)觸發(fā)重新渲染) |
mounted | 實(shí)例掛載到真實(shí)DOM后 | 操作真實(shí)DOM、初始化第三方庫(如ECharts) | |
更新階段 | beforeUpdate | 數(shù)據(jù)變化后,虛擬DOM重新渲染前 | 獲取更新前的DOM狀態(tài)(慎改數(shù)據(jù)) |
updated | 虛擬DOM重新渲染并應(yīng)用更新后 | 依賴新DOM的操作(如調(diào)整插件尺寸) | |
銷毀階段 | beforeDestroy | 實(shí)例銷毀前(仍完整可用) | 清除定時(shí)器、解綁事件、銷毀全局監(jiān)聽 |
destroyed | 實(shí)例銷毀后(所有綁定和子實(shí)例已移除) | 釋放非Vue管理的資源(如手動(dòng)創(chuàng)建的DOM事件) |
生命周期圖示:
mounted:掛載完成,Vue初始化成功,HTML頁面渲染成功。
一般用于頁面初始化自動(dòng)的ajax請求后臺(tái)數(shù)據(jù)
如果想在頁面加載完畢,就能列出所有員工數(shù)據(jù),就可以在mounted鉤子函數(shù)中,發(fā)送異步請求查詢員工數(shù)據(jù)了。
methods: { async showMessage() { // 這里可以添加實(shí)際的查詢邏輯 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(); // 頁面加載完成后,自動(dòng)查詢所有用戶數(shù)據(jù) }
運(yùn)行:
到此這篇關(guān)于Vue 使用Ajax異步或同步的文章就介紹到這了,更多相關(guān)Vue Ajax異步或同步內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
從0到1構(gòu)建vueSSR項(xiàng)目之node以及vue-cli3的配置
這篇文章主要介紹了從0到1構(gòu)建vueSSR項(xiàng)目之node以及vue-cli3的配置,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03解決echarts vue數(shù)據(jù)更新,視圖不更新問題(echarts嵌在vue彈框中)
這篇文章主要介紹了解決echarts vue數(shù)據(jù)更新,視圖不更新問題(echarts嵌在vue彈框中),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07Element-Plus表格實(shí)現(xiàn)Table自定義合并行數(shù)據(jù)
在開發(fā)項(xiàng)目中,我們時(shí)常會(huì)用到表格,許多需求可能會(huì)要求自定義特定的行或列,下面就跟隨小編一起來學(xué)習(xí)一下在實(shí)際開發(fā)中如何實(shí)現(xiàn)這一要求吧2024-12-12Vue技巧Element Table二次封裝實(shí)戰(zhàn)示例
這篇文章主要為大家介紹了Vue技巧Element Table二次封裝實(shí)戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Vue+thinkphp5.1+axios實(shí)現(xiàn)文件上傳
這篇文章主要為大家詳細(xì)介紹了Vue+thinkphp5.1+axios實(shí)現(xiàn)文件上傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05