Skip to content

useDynamicList

一个帮助你管理列表状态,并能生成唯一 key 的 Hook。

使用Demo

vue

<template>
  <div class="hello" style="display:flex;align-items:flex-start;">
    <div style="width: 60vw">
      <p
          v-for=" (active,index) in list"
          :key="getKey(index)"
          style="width: 100%;height:60px;border:1px solid #cccccc;line-height:60px;"
      > value:{{ active }} uuid:{{getKey(index)}}</p>
    </div>
    <div style="width:39vw">
      <button @click="()=> insert(0,Math.random())">insert头部插入</button>
      <button @click="()=> resetList(['a','b','c'])">重置</button>
      <button @click="()=> merge(0, [Math.random(),Math.random()])">头部插入多个</button>
      <button @click="()=> replace(1, Math.random())">第二个替换</button>
      <button @click="()=> remove(1)">删除第二个</button>
      <button @click="()=> move(0,2)">一三互换位置</button>
      <button @click="()=> push(Math.random())">尾部插入</button>
      <button @click="()=> pop()">尾部删除</button>
      <button @click="()=> unshift(Math.random())">头部插入</button>
      <button @click="()=> shift()">头部删除</button>
    </div>
  </div>
</template>

<script lang="ts">
  import {ref} from 'vue';
  import {useDynamicList} from "@dfsj/hooks";

  export default {

    setup() {
      const defalutValue = ref(['a', 'b', 'c'])
      const {
        list,
        insert,
        resetList,
        merge,
        replace,
        remove,
        move,
        getKey,
        push,
        pop,
        unshift,
        shift,
      } = useDynamicList(defalutValue);

      // useVirtualList测试
      return {
        list,
        insert,
        resetList,
        merge,
        replace,
        remove,
        move,
        getKey,
        push,
        pop,
        unshift,
        shift
      };
    },
  };
</script>

useDynamicList接受一个数组,导出一个list及一系列操作数组的方法。

Api

Params

参数说明类型默认值
initialValue列表的初始值T[][]

Result

参数说明类型
list当前的列表T[]
resetList重新设置 list 的值(list: T[]) => void
insert在指定位置插入元素(index: number, obj: T) => void
merge在指定位置插入多个元素(index: number, obj: T[]) => void
replace替换指定元素(index: number, obj: T) => void
remove删除指定元素(index: number) => void
move移动元素(oldIndex: number, newIndex: number) => void
getKey获得某个元素的 uuid(index: number) => number
getIndex获得某个key的 index(key: number) => number
push在列表末尾添加元素(obj: T) => void
pop移除末尾元素() => void
unshift在列表起始位置添加元素(obj: T) => void
shift移除起始位置元素() => void