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

基于vue實(shí)現(xiàn)分頁(yè)組件的示例代碼

 更新時(shí)間:2023年08月01日 10:34:10   作者:如意呀  
分頁(yè)組件是一種用戶界面元素,用于在長(zhǎng)列表或數(shù)據(jù)集中分割內(nèi)容,分頁(yè)組件是每個(gè)開發(fā)人員必須掌握的一個(gè)組件,廣泛應(yīng)用在各個(gè)場(chǎng)所,用以用戶方便閱讀等,本文就給大家介紹一下如何基于vue寫出的分頁(yè)組件,需要的朋友可以參考下

分頁(yè)組件是一種用戶界面元素,用于在長(zhǎng)列表或數(shù)據(jù)集中分割內(nèi)容。它通常用于網(wǎng)頁(yè)、移動(dòng)應(yīng)用或其他軟件界面中,以便用戶能夠按頁(yè)瀏覽內(nèi)容。 分頁(yè)組件是每個(gè)開發(fā)人員必須掌握的一個(gè)組件,廣泛應(yīng)用在各個(gè)場(chǎng)所。用以用戶方便閱讀等。

組件說(shuō)明

變量顏色

@danger: #cc3600; 
@primary: #6b9eee; 
@words: #373737; 
@lightWords: #999; 
@warn: #dc6a12; 
@success: #7ebf50; 
@gray: #b4b8bc; 
@dark: #202020;
屬性名含義類型必填默認(rèn)值
current當(dāng)前頁(yè)碼Number1
total總數(shù)據(jù)量Number0
limit頁(yè)容量Number10
visibleNumber可見(jiàn)頁(yè)碼數(shù)Number10
事件名含義事件參數(shù)參數(shù)類型
pageChange頁(yè)碼變化新的頁(yè)碼Number

# 基本樣式

新建一個(gè)Page.vue,在template寫入基本模板,通過(guò)a標(biāo)簽(當(dāng)然也可以用其他的),寫出基本模板,同時(shí)加入點(diǎn)擊事件和css樣式和一些動(dòng)態(tài)樣式,用:class來(lái)綁定動(dòng)態(tài)css類,同時(shí)要注意,只有當(dāng)頁(yè)碼數(shù)大于一的時(shí)候才會(huì)用到這個(gè)組件,否則毫無(wú)意義,同時(shí)要注意,子組件不能更改父組件要用的數(shù)據(jù),以免出現(xiàn)錯(cuò)誤

定義了一個(gè)active為加粗顏色,方便確定當(dāng)前位置,通過(guò)vfor根據(jù)生成的數(shù)組循環(huán)生成a標(biāo)簽

<template>
  <!-- //只有總頁(yè)數(shù)大于1的時(shí)候才會(huì)顯示,比較穩(wěn)定,選擇用vif否則沒(méi)有意義 -->
  <div class="pager-container" v-if="pageNumber > 1">
    <!-- 子組件無(wú)權(quán)更改數(shù)據(jù),在父組件中數(shù)據(jù)更改可能會(huì)影響到其他,所以子組件只能通過(guò)發(fā)出通知的形式告訴父組件 -->
    <!-- 點(diǎn)擊的時(shí)候調(diào)用h函數(shù),傳入適當(dāng)?shù)膮?shù),大返回就傳入第一頁(yè),小返回就傳入當(dāng)前頁(yè)數(shù)-1 -->
    <!-- 注意a標(biāo)簽沒(méi)有href,如果寫上了就會(huì)存在重新加載頁(yè)面的問(wèn)題 -->
    <a @click="handleClick(1)" :class="{ disabled: current === 1 }"
      >|&lt;&lt;</a
    >
    <a
      @click="handleClick(current - 1)"
      :class="{ disabled: current === 1 }"
      >&lt;&lt;</a
    >
    <!-- 循環(huán)生成的數(shù)組,設(shè)置唯一值,并且判斷添加active樣式(當(dāng)前頁(yè)是否為) -->
    <!-- 當(dāng)前頁(yè)是多少就傳入多少 -->
    <a
      @click="handleClick(tem)"
      v-for="(tem, i) in numbers"
      :key="i"
      :class="{ active: tem === current }"
      >{{tem}}</a
    >
    <a
      @click="handleClick(current + 1)"
      :class="{ disabled: current === pageNumber }"
      >&gt;&gt;</a
    >
    <a
      @click="handleClick(pageNumber)"
      :class="{ disabled: current === pageNumber }"
      >&gt;&gt;|</a
    >
  </div>
</template>

基本樣式設(shè)置(less)

<style lang="less" scoped>
@import "../styles/var.less";
.pager-container {
  display: flex;
  justify-content: center;
  margin: 20px 0;
  a {
    color: @primary;
    margin: 0 6px;
    cursor: pointer;
    &.disabled {
      color: @lightWords;
      cursor: not-allowed;
    }
    &.active {
      color: @words;
      font-weight: bold;
      cursor: text;
    }
  }
}
</style>

導(dǎo)出部分

計(jì)算屬性部分: 寫入了四個(gè)計(jì)算函數(shù),分別是pageNumber用來(lái)得到一共分成了多少頁(yè)(Math.ceil(this.total / this.limit); //總條數(shù)/每頁(yè)限制10條 得到頁(yè)數(shù))getMin(),getMax()得到當(dāng)前展示頁(yè)最大的那一個(gè)和最小那一個(gè)頁(yè)數(shù)

算方法:min()this.current - Math.floor(this.visibleNumber / 2);//當(dāng)前頁(yè)面減去最多顯示頁(yè)碼數(shù)的一半得到顯示最小的那個(gè) max()this.getMin + this.visibleNumber - 1;最小值+當(dāng)前頁(yè)面最多顯示幾個(gè)頁(yè)碼-1得到最大的那個(gè)頁(yè)碼 numbers():通過(guò)構(gòu)建一個(gè)數(shù)組,對(duì)數(shù)組里面添加頁(yè)數(shù),通過(guò)for循環(huán)從最小到最大,往里面添加數(shù)字形成數(shù)組(注意:每次轉(zhuǎn)跳都會(huì)重新渲染頁(yè)面,所以min和max都會(huì)不斷變化,數(shù)組的值也會(huì)不斷變化)

方法部分methods部分:

handleClick(newPage)方法拋出事件并且通知父組件,因?yàn)?nbsp; 子組件無(wú)權(quán)更改數(shù)據(jù),在父組件中數(shù)據(jù)更改可能會(huì)影響到其他,所以子組件只能通過(guò)發(fā)出通知的形式告訴父組件

  • this.$emit 是 Vue 實(shí)例提供的方法,用于觸發(fā)自定義事件并通知父組件。
  • “pageChange” 是自定義事件的名稱,可以根據(jù)具體情況自定義命名。
  • newPage 是要傳遞給父組件的新頁(yè)碼數(shù)據(jù)。
  • 通過(guò)這段代碼,當(dāng)用戶點(diǎn)擊分頁(yè)組件的頁(yè)面導(dǎo)航按鈕時(shí),會(huì)通過(guò)觸發(fā)自定義事件的方式通知父組件發(fā)生了頁(yè)碼的變化,父組件則可以根據(jù)新的頁(yè)碼進(jìn)行相應(yīng)的處理,例如重新加載對(duì)應(yīng)頁(yè)碼的數(shù)據(jù)或更新UI等。

props:部分:

<script>
export default {
  computed: {
    pageNumber: function () {
      return Math.ceil(this.total / this.limit); //總條數(shù)/每頁(yè)限制10條 得到頁(yè)數(shù)
    },
    getMax() {
      let max = this.getMin + this.visibleNumber - 1;
      if (max > this.pageNumber) {
        max = this.pageNumber;
      }
      return max;
    },
    getMin() {
      //得到顯示頁(yè)碼中最小的數(shù)字
      //當(dāng)前頁(yè)面減去最多顯示頁(yè)碼數(shù)的一半得到顯示最小的那個(gè)
      let min = this.current - Math.floor(this.visibleNumber / 2);
      if (min < 1) {
        min = 1;
      }
      return min;
    },
    numbers() {
      let arr = [];
      for (let i = this.getMin; i <= this.getMax; i++) {
        arr.push(i);
      }
      return arr;
    },
  },
  methods: {
    handleClick(newPage) {
      //如果新頁(yè)面小于1則賦值為1,大于最大的頁(yè)數(shù)則賦值為最大頁(yè)數(shù),等于當(dāng)前頁(yè)數(shù)直接return
      if (newPage < 1) {
        newPage = 1;
      }
      if (newPage > this.pageNumber) {
        newPage = this.pageNumber;
      }
      if (newPage === this.current) {
        return;
      }
      //拋出事件通知父組件
      //參數(shù):名字,數(shù)據(jù)
      this.$emit("pageChange", newPage);
    },
  },
  props: {
    current: {
      //當(dāng)前頁(yè)
      type: Number,
      default: 1,
    },
    total: {
      //總條數(shù)
      type: Number,
      default: 0,
    },
    limit: {
      //每頁(yè)展示多少條
      type: Number,
      default: 10,
    },
    // 最多顯示頁(yè)碼的個(gè)數(shù)
    visibleNumber: {
      type: Number,
      default: 10,
    },
  },
};
</script>

組件部分到此為止,接下里是導(dǎo)入部分

app.vue

import Pager from "./components/Page.vue"引入組件,并且通過(guò) components: {Pager, },注冊(cè)組件

模板中寫入自定義的組件,通過(guò)total傳入總頁(yè)數(shù),current傳入當(dāng)前頁(yè)數(shù),點(diǎn)擊調(diào)用子組件拋出的事件交由父組件執(zhí)行,在methods:總定義了新的方法handlePageChange傳入新頁(yè)碼,讓當(dāng)前頁(yè)面變成新頁(yè)

最后data()方面?zhèn)魅肓嘶緮?shù)值

$event 是一個(gè)預(yù)留的特殊變量,用于傳遞事件對(duì)象或其他數(shù)據(jù)給事件處理函數(shù)。@pageChange 是監(jiān)聽自定義事件,當(dāng)自定義事件被觸發(fā)時(shí),Vue 會(huì)自動(dòng)將事件對(duì)象作為參數(shù)傳遞給事件處理函數(shù)。而 $event 則是用于接收這個(gè)事件對(duì)象的特殊變量。你可以自由選擇處理函數(shù)的形參名稱,例如這里使用了 $event,也可以使用其他名稱,如 event、e 等。

<template>
  <div>
    <Pager
      :total="total"
      :current="current"
      @pageChange="handlePageChange($event)"
    ></Pager>
  </div>
  <!-- <h1 v-if="score>=80">U</h1>
    <h2 v-else-if="score>=60">L</h2>
    <h3 v-else>X</h3> -->
  <!-- vif會(huì)添加和刪除元素,控制是否生成對(duì)應(yīng)的dom,而vshow始終都會(huì)生成dom用dom控制style:display:none,vif則是直接刪除元素 -->
  <!-- 使用vif可以有效的減少樹的節(jié)點(diǎn)和渲染量,但是也會(huì)導(dǎo)致樹的不穩(wěn)定,而vshow可以保持?jǐn)?shù)的穩(wěn)定,但不能減少樹的節(jié)點(diǎn)和渲染量 -->
  <!-- 因此,在實(shí)際開發(fā)中,顯示頻繁變化的情況下應(yīng)該用vshow,用以保持樹的穩(wěn)定,顯示狀態(tài)變化少的時(shí)候用vif,用以減少樹的節(jié)點(diǎn)和渲染量 -->
</template>
<script>
import Pager from "./components/Page.vue";
export default {
  components: {
    Pager,
  },
  methods: {
    handlePageChange(newPage) {
      this.current = newPage;
    },
  },
  data() {
    return {
      current: 1,
      total: 302,
    };
  },
};
</script>
<style scoped>
.iconfont {
  font-size: 90px;
  color: black;
}
</style>

總結(jié):

該組件中需要注意的部分 一是vif和vshow區(qū)別,這一是面試題??嫉?vif會(huì)添加和刪除元素,控制是否生成對(duì)應(yīng)的dom,而vshow始終都會(huì)生成dom用dom控制style:display:none,vif則是直接刪除元素 使用vif可以有效的減少樹的節(jié)點(diǎn)和渲染量,但是也會(huì)導(dǎo)致樹的不穩(wěn)定,而vshow可以保持?jǐn)?shù)的穩(wěn)定,但不能減少樹的節(jié)點(diǎn)和渲染量因此,在實(shí)際開發(fā)中,顯示頻繁變化的情況下應(yīng)該用vshow,用以保持樹的穩(wěn)定,顯示狀態(tài)變化少的時(shí)候用vif,用以減少樹的節(jié)點(diǎn)和渲染量 二是子組件無(wú)權(quán)更改數(shù)據(jù),在父組件中數(shù)據(jù)更改可能會(huì)影響到其他,所以子組件只能通過(guò)發(fā)出通知的形式告訴父組件,于是出現(xiàn)了子組件拋出事件通知父組件要進(jìn)行改變了,從而由父組件進(jìn)行改變,并且重新渲染dom。通過(guò)點(diǎn)擊調(diào)用handleClick(newPage)方法傳入新頁(yè)碼參數(shù),同時(shí)this.emit("pageChange",newPage);是Vue實(shí)例提供的方法,用于觸發(fā)自定義事件并通知父組件。 //參數(shù):名字,數(shù)據(jù)  拋出事件通知父組件還要注意這個(gè)特殊的預(yù)留變量 emit("pageChange", newPage);是 Vue 實(shí)例提供的方法,用于觸發(fā)自定義事件并通知父組件。 //參數(shù):名字,數(shù)據(jù)  拋出事件通知父組件 還要注意這個(gè)特殊的預(yù)留變量  emit("pageChange",newPage);是Vue實(shí)例提供的方法,用于觸發(fā)自定義事件并通知父組件。 //參數(shù):名字,數(shù)據(jù)  拋出事件通知父組件還要注意這個(gè)特殊的預(yù)留變量 event 是一個(gè)預(yù)留的特殊變量,用于傳遞事件對(duì)象或其他數(shù)據(jù)給事件處理函數(shù)。@pageChange 是監(jiān)聽自定義事件,當(dāng)自定義事件被觸發(fā)時(shí),Vue 會(huì)自動(dòng)將**事件對(duì)象作為參數(shù)傳遞給事件處理函數(shù)**。而 event‘ 則是用于接∗∗收這個(gè)事件對(duì)象的特殊變量∗∗。你可以自由選擇處理函數(shù)的形參名稱,例如這里使用了 ‘event` 則是用于接**收這個(gè)事件對(duì)象的特殊變量**。你可以自由選擇處理函數(shù)的形參名稱,例如這里使用了 `event‘ 則是用于接∗∗收這個(gè)事件對(duì)象的特殊變量∗∗。你可以自由選擇處理函數(shù)的形參名稱,例如這里使用了 ‘event,也可以使用其他名稱,如 event、e` 等。

以上就是基于vue實(shí)現(xiàn)分頁(yè)組件的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于vue實(shí)現(xiàn)分頁(yè)組件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • element table組件內(nèi)容換行的實(shí)現(xiàn)方案

    element table組件內(nèi)容換行的實(shí)現(xiàn)方案

    這篇文章主要介紹了element table組件內(nèi)容換行的實(shí)現(xiàn)方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Vue使用自定義指令實(shí)現(xiàn)拖拽行為實(shí)例分析

    Vue使用自定義指令實(shí)現(xiàn)拖拽行為實(shí)例分析

    這篇文章主要介紹了Vue使用自定義指令實(shí)現(xiàn)拖拽行為,結(jié)合實(shí)例形式分析了Vue使用自定義指令實(shí)現(xiàn)拖拽行為具體步驟、原理與操作注意事項(xiàng),需要的朋友可以參考下
    2020-06-06
  • Vue3和i18n實(shí)現(xiàn)多語(yǔ)言方式

    Vue3和i18n實(shí)現(xiàn)多語(yǔ)言方式

    這篇文章主要介紹了Vue3和i18n實(shí)現(xiàn)多語(yǔ)言方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • vue計(jì)算屬性無(wú)法監(jiān)聽到數(shù)組內(nèi)部變化的解決方案

    vue計(jì)算屬性無(wú)法監(jiān)聽到數(shù)組內(nèi)部變化的解決方案

    今天小編就為大家分享一篇vue計(jì)算屬性無(wú)法監(jiān)聽到數(shù)組內(nèi)部變化的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • nextTick能否獲取到最新dom原理解析

    nextTick能否獲取到最新dom原理解析

    這篇文章主要為大家介紹了nextTick能否獲取到最新dom原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • vue封裝axios與api接口管理的完整步驟

    vue封裝axios與api接口管理的完整步驟

    在實(shí)際的項(xiàng)目中,和后臺(tái)的數(shù)據(jù)交互是少不了的,我通常使用的是 axios 庫(kù),所以下面這篇文章主要給大家介紹了關(guān)于vue封裝axios與api接口管理的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • vue中 this.$set的用法詳解

    vue中 this.$set的用法詳解

    這篇文章主要介紹了vue中 this.$set的用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • el-select 的下拉框中新增倆自定義按鈕的操作方法

    el-select 的下拉框中新增倆自定義按鈕的操作方法

    文章介紹了在Element UI的el-select組件中新增自定義按鈕的方法,并詳細(xì)說(shuō)明了設(shè)置`popper-append-to-body`屬性為false的重要性,以及如何通過(guò)修改樣式來(lái)實(shí)現(xiàn)自定義按鈕的添加和樣式效果展示,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • vue el-upload 上傳文件格式校驗(yàn)方法

    vue el-upload 上傳文件格式校驗(yàn)方法

    這篇文章主要介紹了vue el-upload 上傳文件格式校驗(yàn)方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-11-11
  • vue 接口請(qǐng)求地址前綴本地開發(fā)和線上開發(fā)設(shè)置方式

    vue 接口請(qǐng)求地址前綴本地開發(fā)和線上開發(fā)設(shè)置方式

    這篇文章主要介紹了vue 接口請(qǐng)求地址前綴本地開發(fā)和線上開發(fā)設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08

最新評(píng)論