/** * ProjectResourceLinkDemo - 项目与素材库联动演示 * 展示从项目面板切换到素材库的联动功能 */ import { useState, useEffect } from 'react'; import { Button } from '@/components/ui/button'; import { useUIStore } from '@/stores/uiStore'; export function ProjectResourceLinkDemo() { const [lastEvent, setLastEvent] = useState<{ projectId: string; projectName: string } | null>(null); const { switchToLibraryWithProject, leftPanelActiveTab } = useUIStore(); // 监听项目选择事件 useEffect(() => { const handleSelectProjectInLibrary = (event: CustomEvent) => { const { projectId, projectName } = event.detail; setLastEvent({ projectId, projectName }); }; window.addEventListener('selectProjectInLibrary', handleSelectProjectInLibrary as EventListener); return () => { window.removeEventListener('selectProjectInLibrary', handleSelectProjectInLibrary as EventListener); }; }, []); // 模拟项目数据 const mockProjects = [ { id: 'project-1', name: '西游记之大圣归来 - 2015第一部' }, { id: 'project-2', name: '琅琊榜 - 第一集' }, { id: 'project-3', name: '琅琊榜 - 第二集' }, { id: 'project-4', name: '琅琊榜 - 第三集' }, ]; const handleTestProjectLink = (projectId: string, projectName: string) => { switchToLibraryWithProject(projectId, projectName); }; return (
当前面板: {leftPanelActiveTab === 'project' ? '项目面板' : '素材库面板'}
{lastEvent && ( <>最后选择的项目ID: {lastEvent.projectId}
最后选择的项目名称: {lastEvent.projectName}
> )}点击下面的按钮模拟在项目面板中右键点击"展开素材"
联动流程:
技术实现: