import React, { useState, useEffect } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; import { useSelector, useDispatch } from 'react-redux'; import { showNotification } from '../../../store/notification.slice'; import { getKnowledgeBaseById } from '../../../store/knowledgeBase/knowledgeBase.thunks'; import SvgIcon from '../../../components/SvgIcon'; import DatasetTab from './DatasetTab'; import SettingsTab from './SettingsTab'; export default function KnowledgeBaseDetail() { const { id, tab } = useParams(); const navigate = useNavigate(); const dispatch = useDispatch(); const [activeTab, setActiveTab] = useState(tab === 'settings' ? 'settings' : 'datasets'); // Get knowledge base details from Redux store - 使用新的状态结构 const knowledgeBase = useSelector((state) => state.knowledgeBase.currentKnowledgeBase); const loading = useSelector((state) => state.knowledgeBase.loading); const error = useSelector((state) => state.knowledgeBase.error); // Fetch knowledge base details when component mounts or ID changes useEffect(() => { if (id) { dispatch(getKnowledgeBaseById(id)); } }, [dispatch, id]); // Update active tab when URL changes useEffect(() => { if (tab) { setActiveTab(tab === 'settings' ? 'settings' : 'datasets'); } }, [tab]); // If knowledge base not found, show notification and redirect useEffect(() => { if (!loading && error) { dispatch( showNotification({ message: `获取知识库失败: ${error.message || '未找到知识库'}`, type: 'warning', }) ); navigate('/knowledge-base'); } }, [loading, error, dispatch, navigate]); // Handle tab change const handleTabChange = (tab) => { setActiveTab(tab); navigate(`/knowledge-base/${id}/${tab}`); }; // Show loading state if knowledge base not loaded yet if (loading || !knowledgeBase) { return (
加载中...
); } return (
{/* Sidebar */}
{knowledgeBase.name}

{knowledgeBase.desc || ''}


{/* Main content */}
{/* Render the appropriate tab component */} {activeTab === 'datasets' ? ( ) : ( )}
); }