A-floweR-y / id-manager

Id 管理器,用来创建/管理具有唯一性的 id

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

唯一 id 管理器

创建唯一的菜单 id

快速开始

const idManager = new IdManager();

// 第一个参数是父级菜单,第二个参数是菜单名称
const menuId = idManager.create(null, '菜单管理');
console.log(menuId); // 输出: { id: 10, name: '菜单管理', parent: null, children: null, isActive: 1}

// 创建一个子菜单
const childMenuId = idManager.create(menuId.id, '子菜单');

// 删除一个菜单
idManager.delete(childMenuId.id);

// 展示菜单的树形结构
idManager.tree();

API

storage: menuItem[]

使用扁平化数据结构存储所有菜单的数组

create(parentId: null | number, name: string): menuItem

创建一个菜单项,并返回创建的菜单对象。

  • parentId: 父级菜单的 id,如果为 null 则表示这是一个顶级菜单。
  • name: 菜单的名称,同一个父级下创建同样的名称不会创建多个,只会返回同一个 menuItem 对象。

每个菜单创建后会被缓存,删除后再次执行 create 方法时,如果之前创建过,则会返回之前的 menuItem 对象。

remove(id: number): menuItem | undefined

删除一个菜单项,并返回删除的菜单对象。

  • id: 要删除的菜单的 id。如果此菜单包含子菜单也会进行删除。

其实不会对菜单进行真正的删除,只是把它的 isActive 属性设置为 0。这个菜单对象依然在 storage 中,只是被标记为不可用。这就是为什么删除之后再次创建同样的菜单时,会返回同一个 menuItem 对象。

show(): menuTree

因为 storage 中所存储的数据结构并不利于查看,所以此方法会返回一个菜单树,即所有菜单的树形结构。

About

Id 管理器,用来创建/管理具有唯一性的 id


Languages

Language:HTML 45.8%Language:JavaScript 28.4%Language:TypeScript 15.9%Language:CSS 9.9%