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, // 添加刷新标志
|
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;
|
||||||
},
|
},
|
||||||
}] : []),
|
}] : []),
|
||||||
|
|||||||
@@ -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 ?? '',
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user