欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue使用axios實(shí)現(xiàn)動(dòng)態(tài)追加數(shù)據(jù)

 更新時(shí)間:2023年10月26日 10:37:05   作者:itclanCoder  
在vuejs中使用axios時(shí),有時(shí)候需要追加數(shù)據(jù),比如,移動(dòng)端下拉觸底加載,分頁(yè)加載,滑動(dòng)滾動(dòng)條等,下面小編就來(lái)為大家介紹一下如何使用使用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)文章

最新評(píng)論