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);
// 之類使用了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ì)寫靜態(tài)頁(yè)面很熟悉, 寫動(dòng)態(tài)頁(yè)面很生疏, 其實(shí), 寫動(dòng)態(tài)頁(yè)面, 比寫靜態(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ù)組方法, 寫動(dòng)態(tài)頁(yè)面, 就會(huì)很生疏,會(huì)很難寫
數(shù)組中常見實(shí)用方法, 如下所示
| 方法 | 說(shuō)明 |
|---|---|
| push | 向數(shù)組末尾添加一個(gè)或多個(gè)元素 |
| pop | 刪除數(shù)組的最后一個(gè)元素 |
| shift | 刪除數(shù)組的第一個(gè)元素 |
| unshift | 向數(shù)組的開頭添加一個(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 | 過濾數(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ù)編寫實(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)文章
解決element-ui的table表格控件表頭與內(nèi)容列不對(duì)齊問題
這篇文章主要介紹了解決element-ui的table表格控件表頭與內(nèi)容列不對(duì)齊問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
vue數(shù)據(jù)push后不能響應(yīng)式更新的問題
這篇文章主要介紹了vue數(shù)據(jù)push后不能響應(yīng)式更新的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue實(shí)現(xiàn)數(shù)字時(shí)鐘效果
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)數(shù)字時(shí)鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
基于Vue 2.0的模塊化前端 UI 組件庫(kù)小結(jié)
AT-UI 是一款基于 Vue.js 2.0 的輕量級(jí)、模塊化前端 UI 組件庫(kù),主要用于快速開發(fā) PC 網(wǎng)站產(chǎn)品。下面通過本文給大家介紹Vue 2.0的模塊化前端 UI 組件庫(kù),需要的朋友參考下吧2017-12-12
web面試MVC與MVVM區(qū)別及Vue為什么不完全遵守MVVM解答
這篇文章主要介紹了web面試中常問問題,MVC與MVVM區(qū)別以及Vue為什么不完全遵守MVVM的難點(diǎn)解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09

