vue使用axios實(shí)現(xiàn)動(dòng)態(tài)追加數(shù)據(jù)
前言
在vuejs中使用axios
時(shí),有時(shí)候需要追加數(shù)據(jù),比如,移動(dòng)端下拉觸底加載,分頁(yè)加載,滑動(dòng)滾動(dòng)條,等等,這時(shí)候就需要追加數(shù)據(jù)了,下面我們來(lái)演示下.
代碼演示
<template> <div> <div> <el-button type="primary" @click="handleBtnGetJoke">請(qǐng)求數(shù)據(jù)</el-button> <el-button type="danger" @click="handleBtnClearData" v-if="aDatas.length > 0?true:false">清空數(shù)據(jù)</el-button> </div> <div> <ul v-if="aDatas.length > 0?true:false"> <li class="joke-list" v-for="item in aDatas" :key="item.hashId">{{ item.content }} </li> <div class="loading" v-if="aDatas.length > 0?true:false"> <el-button size="mini" type="primary" @click="handleBtnLoading" >加載</el-button> </div> </ul> </div> </div> </template> <script setup> import axios from "axios"; import { ref } from "vue"; let aDatas = ref([]); let page = ref(1); let pagesize = ref(5); async function handleBtnGetJoke() { const params = { key: 'aa1b7ad08be2a09a4e0d2d46897e2dc8', page: page.value, pagesize:pagesize.value, time: 1418816972 } const response = await axios.get('/api/joke/content/text.php',{params}) console.log(response); if(response.status == 200) { const { data } = response.data.result; console.log(data); // 之類(lèi)使用了concat方法,將數(shù)據(jù)疊加到aDatas中 aDatas.value = aDatas.value.concat(data); } } // 加載數(shù)據(jù),疊加 function handleBtnLoading() { // 頁(yè)碼+1,自增 page.value++; // 重新加載數(shù)據(jù) handleBtnGetJoke(); } // 清空數(shù)據(jù) function handleBtnClearData() { aDatas.value = []; } </script> <style scoped> .joke-list { list-style-type: decimal; list-style-position: outside; padding: 5px 0; border-bottom: dashed 1px #ccc; } .loading { margin: 0 auto; text-align:center; } </style>
在上面的示例代碼中,實(shí)現(xiàn)數(shù)據(jù)的追加, 需要使用concat方法, 該方法用于合并兩個(gè)或多個(gè)數(shù)組,核心就是如下一行代碼
新的數(shù)據(jù)和舊data
合并, 然后賦值給aDatas.value
aDatas.value = aDatas.value.concat(data);
而點(diǎn)擊加載更多數(shù)據(jù), 需要使用handleBtnLoading
方法, 該方法中, 頁(yè)碼+1, 然后重新加載數(shù)據(jù),調(diào)用一次handleBtnGetJoke
方法, 該方法中, 請(qǐng)求數(shù)據(jù), 然后將數(shù)據(jù)追加到aDatas.value
中, 這樣就實(shí)現(xiàn)了數(shù)據(jù)的追加
如果不進(jìn)行,頁(yè)碼page.value++
, 數(shù)據(jù)不會(huì)追加, 因?yàn)閿?shù)據(jù)是異步加載的, 需要等待數(shù)據(jù)加載完成, 才能追加數(shù)據(jù)
// 頁(yè)碼+1,自增 page.value++; // 重新加載數(shù)據(jù) handleBtnGetJoke();
如果想一上來(lái)就加載數(shù)據(jù)
需要從vue
中引入onMounted
,方法, 該方法, 會(huì)在組件掛載完成后, 執(zhí)行, 這樣, 就可以在掛載完成后, 調(diào)用handleBtnGetJoke
方法, 加載數(shù)據(jù)
import { onMounted } from 'vue'; onMounted(() => { // 調(diào)用handleBtnGetJoke方法, 加載數(shù)據(jù) handleBtnGetJoke(); })
很多初學(xué)者, 不知道如何實(shí)現(xiàn)數(shù)據(jù)的追加, 其實(shí)很簡(jiǎn)單, 就是使用concat
方法, 然后將數(shù)據(jù)追加到aDatas.value
中,就可以實(shí)現(xiàn)數(shù)據(jù)追加
針對(duì)寫(xiě)靜態(tài)頁(yè)面很熟悉, 寫(xiě)動(dòng)態(tài)頁(yè)面很生疏, 其實(shí), 寫(xiě)動(dòng)態(tài)頁(yè)面, 比寫(xiě)靜態(tài)頁(yè)面, 簡(jiǎn)單很多, 因?yàn)閯?dòng)態(tài)頁(yè)面, 需要使用vue
提供的API
, 這些API
, 都是封裝好的, 調(diào)用起來(lái)很簡(jiǎn)單
但是基礎(chǔ)的數(shù)組方法,增刪查改, 還是需要了解的, 因?yàn)檫@些基礎(chǔ)的數(shù)組方法, 都是API
封裝的, 調(diào)用起來(lái)很簡(jiǎn)單,如果不知道這些基礎(chǔ)的數(shù)組方法, 寫(xiě)動(dòng)態(tài)頁(yè)面, 就會(huì)很生疏,會(huì)很難寫(xiě)
數(shù)組中常見(jiàn)實(shí)用方法, 如下所示
方法 | 說(shuō)明 |
---|---|
push | 向數(shù)組末尾添加一個(gè)或多個(gè)元素 |
pop | 刪除數(shù)組的最后一個(gè)元素 |
shift | 刪除數(shù)組的第一個(gè)元素 |
unshift | 向數(shù)組的開(kāi)頭添加一個(gè)或多個(gè)元素 |
slice | 截取數(shù)組, 返回一個(gè)新數(shù)組 |
splice | 刪除數(shù)組中指定位置的元素, 并可在指定位置添加元素 |
concat | 合并兩個(gè)或多個(gè)數(shù)組 |
join | 把數(shù)組作為字符串返回 |
indexOf | 查找元素在數(shù)組中的位置 |
lastIndexOf | 查找元素在數(shù)組中的最后一個(gè)位置 |
forEach | 遍歷數(shù)組 |
map | 遍歷數(shù)組, 返回一個(gè)新數(shù)組 |
filter | 過(guò)濾數(shù)組, 返回一個(gè)新數(shù)組 |
some | 判斷數(shù)組中, 是否有元素滿足條件 |
every | 判斷數(shù)組中, 所有元素是否都滿足條件 |
reduce | 遍歷數(shù)組, 并返回一個(gè)值 |
reduceRight | 遍歷數(shù)組, 并返回一個(gè)值 |
find | 查找數(shù)組中, 第一個(gè)滿足條件的元素 |
findIndex | 查找數(shù)組中, 第一個(gè)滿足條件的元素的位置 |
fill | 用一個(gè)固定值填充數(shù)組 |
copyWithin | 數(shù)組的一部分, 復(fù)制到同一數(shù)組中的另一個(gè)位置 |
includes | 查找數(shù)組中, 是否包含某個(gè)元素 |
entries | 返回?cái)?shù)組中每個(gè)索引的鍵值對(duì) |
keys | 返回?cái)?shù)組中每個(gè)索引的鍵 |
values | 返回?cái)?shù)組中每個(gè)索引的值 |
isArray | 判斷是否為數(shù)組 |
總結(jié)
以上這些數(shù)組的基礎(chǔ)方法需要非常熟悉,因?yàn)榫幊讨胁僮鲾?shù)據(jù),就是操作數(shù)組,字符串,對(duì)象,一些方法是非常重實(shí)用的,如果自己不知道,那就會(huì)業(yè)務(wù)編寫(xiě)實(shí)現(xiàn)受阻礙
實(shí)現(xiàn)動(dòng)態(tài)的追加數(shù)據(jù),也比較簡(jiǎn)單,其核心就是數(shù)組當(dāng)中的concat
方法,以及需要頁(yè)碼自增,即可實(shí)現(xiàn)
到此這篇關(guān)于vue使用axios實(shí)現(xiàn)動(dòng)態(tài)追加數(shù)據(jù)的文章就介紹到這了,更多相關(guān)vue axios動(dòng)態(tài)追加數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue+quasar使用遞歸實(shí)現(xiàn)動(dòng)態(tài)多級(jí)菜單
這篇文章主要為大家詳細(xì)介紹了vue+quasar使用遞歸實(shí)現(xiàn)動(dòng)態(tài)多級(jí)菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07vue toggle做一個(gè)點(diǎn)擊切換class(實(shí)例講解)
下面小編就為大家分享一篇使用vue toggle實(shí)現(xiàn)點(diǎn)擊切換class的示例。具有很好的參考價(jià)值。希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03vue.js的vue-cli腳手架中使用百度地圖API的實(shí)例
今天小編就為大家分享一篇關(guān)于vue.js的vue-cli腳手架中使用百度地圖API的實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01vue框架編輯接口頁(yè)面下拉級(jí)聯(lián)選擇并綁定接口所屬模塊
這篇文章主要為大家介紹了vue框架編輯接口頁(yè)面實(shí)現(xiàn)下拉級(jí)聯(lián)選擇以及綁定接口所屬模塊,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05elementui之el-table-column日期格式顯示方式
文章介紹了如何使用formatter屬性對(duì)表格某一列的內(nèi)容進(jìn)行日期格式化,通過(guò)綁定日期格式化的方法實(shí)現(xiàn),展示了前端代碼的模板和方法,并給出了前端效果的展示2024-12-12Vue兩種組件類(lèi)型:遞歸組件和動(dòng)態(tài)組件的用法
這篇文章主要介紹了Vue兩種組件類(lèi)型:遞歸組件和動(dòng)態(tài)組件的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08vue中PC端使用高德地圖實(shí)現(xiàn)搜索定位、地址標(biāo)記、彈窗顯示定位詳情(完整實(shí)例)
這篇文章主要介紹了vue中PC端使用高德地圖實(shí)現(xiàn)搜索定位、地址標(biāo)記、彈窗顯示定位詳情,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07