准备好两个变量,一个用来保存平级菜单列表,一个用来保存遍历后的菜单树。
推荐后端返回平级菜单树,假如菜单比较多,可以直接结合find方法找到菜单,做搜索功能很省事。
const [menuList, setMenuList] = useState([]);
const [treeMenuList, setTreeMenuList] = useState([]);
如果后端返回的是平级菜单树,则需要转化成树形结构,注意利用JSON方法进行深度克隆一下,防止影响原有数据
const treeList: any = listTransToTreeData(JSON.parse(JSON.stringify(userInfo.menus)), 'jd_dm', 'fjd_dm', 'children');
listTransToTreeData方法如下:
/**
* 平级结构转树形结构
*
* 示例:const jsonDataTree = listTransToTreeData (jsonData, 'id', 'pid', 'chindren');
* @param list 平级数据列表
* @param idStr id的字符串
* @param pidStr 父id字符串
* @param chindrenStr children的字符串
*/
export const listTransToTreeData = (list: any