useCircularList

一个帮助创建可以循环遍历列表的 React 钩子。

提示

如果您需要管理在两个稳定值之间切换的状态,考虑使用 useToggle 作为替代方案。

演示

源码
🍌 banner
🍎 apple
🍇 grape
🍉 watermelon
🍊 orange
Current:
[0] 🍌 banner

用法

请查看 API。

源码

点击下方链接跳转 GitHub 查看源代码。

API

const [value, index, actions] = useCircularList<T>(initialList: T[], options 选项 Options \{#options})

选项 Options

export interface UseCycleListOptions<T, R extends T = T> { /** * 初始值 */ initialValue?: R /** * 当值未找到时的回退索引 */ fallbackIndex?: number /** * 自定义函数来获取值的索引 * * @param {T} value - `T`,要查找的值 * @param {T[]} list - `T[]`,要搜索的列表 * @returns {number} `number`,值的索引 */ getIndexOf?: (value: T, list: T[]) => number }

返回值

export type UseCycleListReturnsActions<T> = { /** * 移至下一个值 * * @param {number} [step] - `number`,移动的步数 * @returns {T} `T`,下一个值 */ next: (step?: number) => T /** * 移至上一个值 * * @param {number} [step] - `number`,移动的步数 * @returns {T} `T`,上一个值 */ prev: (step?: number) => T /** * 移至指定索引处的值 * * @param {number} index - `number`,要移动的索引 * @returns {T} `T`,指定索引处的值 */ go: (index: number) => T } export type UseCycleListReturns<T> = readonly [ /** * 当前值 */ state: T, /** * 控制列表的操作 */ UseCycleListReturnsActions<T>, /** * 当前索引 */ index: number, ]