Vue3異步數(shù)據(jù)加載組件suspense的使用方法
前言
Vue3 增加了很多讓人眼前一亮的特征,suspense 組件就是其中之一,對(duì)處理異步請(qǐng)求數(shù)據(jù)非常實(shí)用,本文通過(guò)簡(jiǎn)單的實(shí)例介紹其使用方法,如對(duì)其有興趣,可以參閱官方文檔。
通常組件在正確呈現(xiàn)之前需要執(zhí)行某種異步請(qǐng)求是很常見(jiàn)的,通常是通過(guò)設(shè)計(jì)一種機(jī)制開發(fā)人員按照機(jī)制處理這個(gè)問(wèn)題,有很多很好的方法實(shí)現(xiàn)這個(gè)需求。
例如,從一個(gè) API 異步獲取數(shù)據(jù),并希望在獲取響應(yīng)數(shù)據(jù)解析完時(shí)顯示一些信息,如 loading 效果,在Vue3中可以使用 suspense 組件來(lái)執(zhí)行這樣的需求。
創(chuàng)建組件
創(chuàng)建一個(gè)組件并將其命名為Peoples.vue,其組件代碼如下:
<template> <div v-for="(people, index) in peoples.results" :key="index"> {{ people.name }} {{ people.birth_year }} </div> </template> <script> import { ref } from "vue"; export default { name: "CyPeoples", async setup() { const peoples = ref(null); const headers = { "Content-Type": "application/json" }; const fetchPeoples = await fetch("https://swapi.dev/api/people", { headers, }); peoples.value = await fetchPeoples.json(); return { peoples }; }, }; </script>
這里將引入 ref 以確保組件狀態(tài)的反應(yīng)性。因此,根據(jù)上面的代碼片段,通過(guò)異步 API 調(diào)用獲取電影數(shù)據(jù)。
對(duì)于VUE項(xiàng)目中發(fā)起 HTTP 請(qǐng)求,通常是使用 Axios ,這里嘗試使用 fetch 。
好的,現(xiàn)在就來(lái)使用 suspense 在應(yīng)用程序內(nèi)顯示數(shù)據(jù)加載中的信息。
修改 App.vue 文件,使其代碼如下:
<template> <div> <h1>星球大戰(zhàn)人物</h1> </div> <suspense> <template #default> <CyPeoples /> </template> <template #fallback> <div> <h3>數(shù)據(jù)加載中……</h3> </div> </template> </suspense> </template> <script> import CyPeoples from "./components/Peoples.vue"; import { suspense } from "vue"; export default { name: "App", components: { CyPeoples, suspense, }, }; </script>
從上面的代碼片段中,使用組件 suspense 可以很簡(jiǎn)單就實(shí)現(xiàn)了 loading 的效果,帶有 #default 為初始化模板組件,顯示異步請(qǐng)求完成之后的 UI 。帶有 #fallback 為異步請(qǐng)求中的處理 UI ,即常見(jiàn)的 loading 效果。
總結(jié)
suspense 組件為Vue3的一個(gè)新特性,簡(jiǎn)化異步請(qǐng)求UI的處理邏輯。
到此這篇關(guān)于Vue3異步數(shù)據(jù)加載組件suspense的文章就介紹到這了,更多相關(guān)Vue3異步數(shù)據(jù)加載組件suspense內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于vue二進(jìn)制轉(zhuǎn)圖片顯示問(wèn)題 后端返回的是byte[]數(shù)組
這篇文章主要介紹了關(guān)于vue二進(jìn)制轉(zhuǎn)圖片顯示問(wèn)題 后端返回的是byte[]數(shù)組,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06axios請(qǐng)求的一些常見(jiàn)操作實(shí)戰(zhàn)指南
axios是一個(gè)輕量的HTTP客戶端,它基于XMLHttpRequest服務(wù)來(lái)執(zhí)行 HTTP請(qǐng)求,支持豐富的配置,支持Promise,支持瀏覽器端和 Node.js 端,下面這篇文章主要給大家介紹了關(guān)于axios請(qǐng)求的一些常見(jiàn)操作,需要的朋友可以參考下2022-09-09Vue.js中provide/inject實(shí)現(xiàn)響應(yīng)式數(shù)據(jù)更新的方法示例
這篇文章主要介紹了Vue.js中provide/inject實(shí)現(xiàn)響應(yīng)式數(shù)據(jù)更新,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10使用window.open和vue router新開頁(yè)面
這篇文章主要介紹了使用window.open和vue router新開頁(yè)面方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03vue+element-ui:使用el-dialog時(shí)彈框不出現(xiàn)的解決
這篇文章主要介紹了vue+element-ui:使用el-dialog時(shí)彈框不出現(xiàn)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10vue.js默認(rèn)路由不加載linkActiveClass問(wèn)題的解決方法
這篇文章主要給大家介紹了關(guān)于vue.js默認(rèn)路由不加載linkActiveClass問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-12-12vue3+vite+antd如何實(shí)現(xiàn)自定義主題
這篇文章主要介紹了vue3+vite+antd如何實(shí)現(xiàn)自定義主題問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03Vue數(shù)據(jù)代理的原理和實(shí)現(xiàn)
數(shù)據(jù)代理是什么?通過(guò)一個(gè)對(duì)象代理,對(duì)另一個(gè)對(duì)象中屬性的操作,簡(jiǎn)單就是說(shuō):可以通過(guò)?對(duì)象b?對(duì)?對(duì)象a?中的屬性進(jìn)行操作,這里我學(xué)到的數(shù)據(jù)代理是用Object.defineProperty這個(gè)方法進(jìn)行操作2022-11-11