Merge #65 into develop_web from feature/20251219_yjp

fix(knowledgeBase): improve navigation and folder tree refresh logic

* feature/20251219_yjp: (1 commits)
  fix(knowledgeBase): improve navigation and folder tree refresh logic

Signed-off-by: vrhs@163.com <accounts_660b6454a0eb398d3f8d2c76@mail.teambition.com>
Merged-by: vrhs@163.com <accounts_660b6454a0eb398d3f8d2c76@mail.teambition.com>

CR-link: https://codeup.aliyun.com/redbearai/python/redbear-mem-open/change/65
This commit is contained in:
vrhs@163.com
2025-12-26 10:24:56 +08:00
3 changed files with 32 additions and 6 deletions

View File

@@ -213,10 +213,23 @@ export const useBreadcrumbManager = (options?: BreadcrumbOptions) => {
refresh: true, // 添加刷新标志 refresh: true, // 添加刷新标志
timestamp: Date.now(), // 添加时间戳确保状态变化 timestamp: Date.now(), // 添加时间戳确保状态变化
}; };
navigate(`/knowledge-base/${breadcrumbPath.knowledgeBase!.id}/private`, {
state: navigationState, // 使用当前页面路径进行导航,避免不必要的路由变化
replace: true // 使用 replace 避免历史记录堆积 const currentPath = window.location.pathname;
}); const targetPath = `/knowledge-base/${breadcrumbPath.knowledgeBase!.id}/private`;
if (currentPath === targetPath) {
// 如果已经在目标页面,直接更新状态而不导航
navigate(targetPath, {
state: navigationState,
replace: true // 使用 replace 避免历史记录堆积
});
} else {
// 如果不在目标页面,正常导航
navigate(targetPath, {
state: navigationState
});
}
return false; return false;
}, },
}] : []), }] : []),

View File

@@ -210,8 +210,15 @@ const Private: FC = () => {
// 清除自动展开路径 // 清除自动展开路径
setAutoExpandPath([]); setAutoExpandPath([]);
// 刷新文件夹树(简单的刷新,不需要复杂的重置逻辑) // 刷新文件夹树 - 使用延迟确保状态重置完成后再刷新
setFolderTreeRefreshKey((prev) => prev + 1); setTimeout(() => {
setFolderTreeRefreshKey((prev) => prev + 1);
}, 100);
// 手动触发表格刷新,确保数据更新
setTimeout(() => {
tableRef.current?.loadData();
}, 200);
// 清除 state避免重复处理 // 清除 state避免重复处理
navigate(location.pathname, { replace: true, state: {} }); navigate(location.pathname, { replace: true, state: {} });
@@ -584,6 +591,8 @@ const Private: FC = () => {
await new Promise(resolve => setTimeout(resolve, 300)); await new Promise(resolve => setTimeout(resolve, 300));
// 然后刷新文件夹树 // 然后刷新文件夹树
setFolderTreeRefreshKey((prev) => prev + 1); setFolderTreeRefreshKey((prev) => prev + 1);
// 确保 folder 状态正确设置
if (!folder) { if (!folder) {
setFolder({ setFolder({
kb_id: knowledgeBaseId ?? '', kb_id: knowledgeBaseId ?? '',

View File

@@ -309,9 +309,13 @@ const FolderTree: FC<FolderTreeProps> = ({
const load = async () => { const load = async () => {
if (!knowledgeBaseId) { if (!knowledgeBaseId) {
setTreeData([]); setTreeData([]);
setExpandedKeys([]); // 重置展开状态
return; return;
} }
try { try {
// 重置展开状态,确保从根目录开始
setExpandedKeys([]);
const nodes = await buildTreeNodes(knowledgeBaseId, knowledgeBaseId); const nodes = await buildTreeNodes(knowledgeBaseId, knowledgeBaseId);
if (!cancelled) { if (!cancelled) {
setTreeData(nodes); setTreeData(nodes);