亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

組件說明

變量顏色

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

# 基本樣式

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

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

<template>
  <!-- //只有總頁數(shù)大于1的時候才會顯示,比較穩(wěn)定,選擇用vif否則沒有意義 -->
  <div class="pager-container" v-if="pageNumber > 1">
    <!-- 子組件無權(quán)更改數(shù)據(jù),在父組件中數(shù)據(jù)更改可能會影響到其他,所以子組件只能通過發(fā)出通知的形式告訴父組件 -->
    <!-- 點擊的時候調(diào)用h函數(shù),傳入適當(dāng)?shù)膮?shù),大返回就傳入第一頁,小返回就傳入當(dāng)前頁數(shù)-1 -->
    <!-- 注意a標(biāo)簽沒有href,如果寫上了就會存在重新加載頁面的問題 -->
    <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)前頁是否為) -->
    <!-- 當(dāng)前頁是多少就傳入多少 -->
    <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)出部分

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

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

方法部分methods部分:

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

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

props:部分:

<script>
export default {
  computed: {
    pageNumber: function () {
      return Math.ceil(this.total / this.limit); //總條數(shù)/每頁限制10條 得到頁數(shù)
    },
    getMax() {
      let max = this.getMin + this.visibleNumber - 1;
      if (max > this.pageNumber) {
        max = this.pageNumber;
      }
      return max;
    },
    getMin() {
      //得到顯示頁碼中最小的數(shù)字
      //當(dāng)前頁面減去最多顯示頁碼數(shù)的一半得到顯示最小的那個
      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) {
      //如果新頁面小于1則賦值為1,大于最大的頁數(shù)則賦值為最大頁數(shù),等于當(dāng)前頁數(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)前頁
      type: Number,
      default: 1,
    },
    total: {
      //總條數(shù)
      type: Number,
      default: 0,
    },
    limit: {
      //每頁展示多少條
      type: Number,
      default: 10,
    },
    // 最多顯示頁碼的個數(shù)
    visibleNumber: {
      type: Number,
      default: 10,
    },
  },
};
</script>

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

app.vue

import Pager from "./components/Page.vue"引入組件,并且通過 components: {Pager, },注冊組件

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

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

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

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

相關(guān)文章

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

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

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

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

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

    Vue3和i18n實現(xiàn)多語言方式

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

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

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

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

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

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

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

    vue中 this.$set的用法詳解

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

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

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

    vue el-upload 上傳文件格式校驗方法

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

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

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

最新評論