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, // 添加刷新标志
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;
},
}] : []),

View File

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

View File

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