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:
@@ -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;
|
||||
},
|
||||
}] : []),
|
||||
|
||||
@@ -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 ?? '',
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user