iT邦幫忙

2024 iThome 鐵人賽

DAY 9
1
JavaScript

不會 VueUse 而被提分手的我系列 第 9

D-09 useCycleList 文件說明與範例 — 循環的藝術

  • 分享至 

  • xImage
  •  

useCycleList,就像無限的輪迴。不論經歷多少次切換,我們總會回到起點。這讓我想起我和程世社季子的感情,無論怎麼變化,最終還是會回到彼此身邊。這一次,我相信循環的力量,程世社季子,等著我吧!
#挽回愛情的第九天
https://ithelp.ithome.com.tw/upload/images/20240922/20162115bnVksaDHMv.png

前情提要

useCycleList 是 VueUse 庫中一個實用的組合式函式,用於在一個列表中循環遍歷項目。本文將詳細介紹 useCycleList 的功能、參數、使用場景,並提供一些實用的範例。

useCycleList API

功能

useCycleList 用於在列表中循環遍歷項目。它提供了簡單的方法來獲取下一個或上一個項目,以及直接跳轉到特定索引的項目。這個函式特別適用於需要循環遍歷固定列表的場景,如輪播圖、標籤切換等。

Props

名稱 類型 說明
list MaybeRefOrGetter<T[]> 要循環遍歷的列表。可以是一個陣列、ref 或 getter 函式。
options UseCycleListOptions<T> 可選參數,用於配置 useCycleList 的行為。

options 參數

名稱 類型 說明
initialValue MaybeRef<T> 初始值。可以是一個值或 ref。
fallbackIndex number 當找不到當前值時使用的默認索引。
getIndexOf (value: T, list: T[]) => number 自定義函式,用於獲取當前值在列表中的索引。

返回值

useCycleList 返回一個對象,包含以下屬性和方法:

名稱 類型 說明
state Ref<T> 當前項目的響應式引用。
index Ref<number> 當前項目在列表中的索引的響應式引用。
next (n?: number) => T 獲取下一個(或之後的第 n 個)項目。
prev (n?: number) => T 獲取上一個(或之前的第 n 個)項目。
go (i: number) => T 直接跳轉到指定索引的項目。

用法範例

範例 1:基本用法

import { ref } from 'vue'
import { useCycleList } from '@vueuse/core'

const fruits = ['🍎', '🍐', '🍊', '🍇']
const { state, next, prev } = useCycleList(fruits)

console.log(state.value) // '🍎'
next() // '🍐'
next() // '🍊'
prev() // '🍐'

範例 2:使用初始值

import { ref } from 'vue'
import { useCycleList } from '@vueuse/core'

const fruits = ['🍎', '🍐', '🍊', '🍇']
const { state, index, go } = useCycleList(fruits, { initialValue: '🍊' })

console.log(state.value) // '🍊'
console.log(index.value) // 2

go(0) // '🍎'

範例 3:使用自定義索引函式

import { ref } from 'vue'
import { useCycleList } from '@vueuse/core'

interface Fruit {
  id: number
  name: string
}

const fruits: Fruit[] = [
  { id: 1, name: '🍎' },
  { id: 2, name: '🍐' },
  { id: 3, name: '🍊' },
]

const { state, next } = useCycleList(fruits, {
  initialValue: { id: 2, name: '🍐' },
  getIndexOf: (value, list) => list.findIndex(item => item.id === value.id),
})

console.log(state.value) // { id: 2, name: '🍐' }
next() // { id: 3, name: '🍊' }

useCycleList 的使用場景

  1. 輪播圖:在圖片輪播組件中,可以使用 useCycleList 來管理當前顯示的圖片和切換邏輯。
  2. 標籤切換:在需要循環切換標籤的場景中,useCycleList 可以簡化切換邏輯的實現。
  3. 遊戲狀態管理:在一些需要循環切換狀態的遊戲中,如回合制遊戲,可以使用 useCycleList 來管理遊戲狀態。
  4. 選項循環:在需要在固定選項中循環選擇的場景,如設置選項、過濾器等,useCycleList 可以提供方便的選項切換功能。

為什麼開發者需要 useCycleList

  1. 簡化循環邏輯useCycleList 封裝了循環遍歷列表的複雜邏輯,大大簡化了開發者手動實現這種功能的工作。
  2. 提高程式碼可讀性:使用 useCycleList 可以讓循環遍歷的邏輯更加清晰和簡潔。
  3. 靈活的配置選項useCycleList 提供了多種配置選項,如自定義索引函式,滿足不同場景的需求。
  4. 響應式設計:返回的狀態是響應式的,可以輕鬆集成到 Vue 的響應式系統中。

結論

useCycleList 是一個簡單而強大的組合式函式,它簡化了在 Vue 應用中實現列表循環遍歷的過程。通過提供直觀的 API 和豐富的配置選項,useCycleList 能夠處理從簡單的數組循環到複雜的對象列表遍歷等各種場景。對於需要在固定列表中進行循環操作的開發者來說,useCycleList 是一個非常有用的工具。

通過合理使用 useCycleList,開發者可以大大減少手動編寫循環邏輯的工作量,提高程式碼的可讀性和可維護性,同時確保應用中循環操作的一致性和可靠性。


上一篇
D-08 syncRef 解析與動機 — 深度解析鏡像魔法
下一篇
D-10 useCycleList 解析與動機 — 解析循環的齒輪
系列文
不會 VueUse 而被提分手的我30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言