diff --git a/src/forge/Wiki/components/sidebar/index.jsx b/src/forge/Wiki/components/sidebar/index.jsx index 36fd2846e..1ec88130b 100644 --- a/src/forge/Wiki/components/sidebar/index.jsx +++ b/src/forge/Wiki/components/sidebar/index.jsx @@ -31,12 +31,12 @@ export default function Sidebar(props) { // 设置选中wiki setSelectedKey(defaultSelectedKeys); // 第一次渲染,默认打开选中的页面所处目录 - const keys = []; + const keys = expandedKeys || []; const list = defaultSelectedKeys[0].split('-'); list.map((item, index)=>{ keys.push(index > 0 ? `${keys[index-1]}-${item}` : item) }) - setExpandedKeys(keys); + setExpandedKeys(Array.from(new Set(keys))); } }, [defaultSelectedKeys]) @@ -319,15 +319,23 @@ export default function Sidebar(props) { } if(!isEditName){ // 新增目录:校验同级目录中是否有相同名称 - const {children, node, title, key} = visible; + const {children, key} = visible; const mList = children.filter(item=>!item.title.trim().startsWith('[[')).map(i=>i.title.trim()) if(mList.includes(`- ${menuName}`)){ setAddMenuError('不能与已有目录名称相同'); return; } const newList = menuList; + // 设置Tree 打开的目录 + const keys = expandedKeys || []; + const list = key.split('-'); + list.map((item, index)=>{ + keys.push(index > 0 ? `${keys[index-1]}-${item}` : item) + }) + keys.push(`${key}-${children.length}`); + setExpandedKeys(Array.from(new Set(keys))); addChildrenByKey(newList, key, menuName); - updateSidebar(treeToMd(newList), 3) + updateSidebar(treeToMd(newList), 3); }else{ // isEditName 1 编辑目录名称 2编辑页面名称 const titleToJudge = isEditName === 2 ? `[[${menuName}]]` : `- ${menuName}`;