recent-data by lobehub/lobehub
npx skills add https://github.com/lobehub/lobehub --skill recent-data近期数据(recentTopics、recentResources、recentPages)存储在会话存储中。
在应用顶层(例如 RecentHydration.tsx):
import { useInitRecentTopic } from '@/hooks/useInitRecentTopic';
import { useInitRecentResource } from '@/hooks/useInitRecentResource';
import { useInitRecentPage } from '@/hooks/useInitRecentPage';
const App = () => {
useInitRecentTopic();
useInitRecentResource();
useInitRecentPage();
return <YourComponents />;
};
import { useSessionStore } from '@/store/session';
import { recentSelectors } from '@/store/session/selectors';
const Component = () => {
const recentTopics = useSessionStore(recentSelectors.recentTopics);
const isInit = useSessionStore(recentSelectors.isRecentTopicsInit);
if (!isInit) return <div>加载中...</div>;
return (
<div>
{recentTopics.map((topic) => (
<div key={topic.id}>{topic.title}</div>
))}
</div>
);
};
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
const { data: recentTopics, isLoading } = useInitRecentTopic();
const recentTopics = useSessionStore(recentSelectors.recentTopics);
// 类型: RecentTopic[]
const isInit = useSessionStore(recentSelectors.isRecentTopicsInit);
// 类型: boolean
RecentTopic 类型:
interface RecentTopic {
agent: {
avatar: string | null;
backgroundColor: string | null;
id: string;
title: string | null;
} | null;
id: string;
title: string | null;
updatedAt: Date;
}
const recentResources = useSessionStore(recentSelectors.recentResources);
// 类型: FileListItem[]
const isInit = useSessionStore(recentSelectors.isRecentResourcesInit);
const recentPages = useSessionStore(recentSelectors.recentPages);
const isInit = useSessionStore(recentSelectors.isRecentPagesInit);
每周安装量
358
代码仓库
GitHub 星标数
74.3K
首次出现
2026年1月27日
安全审计
安装于
codex314
opencode312
gemini-cli311
github-copilot297
claude-code277
cursor273
Recent data (recentTopics, recentResources, recentPages) is stored in session store.
In app top-level (e.g., RecentHydration.tsx):
import { useInitRecentTopic } from '@/hooks/useInitRecentTopic';
import { useInitRecentResource } from '@/hooks/useInitRecentResource';
import { useInitRecentPage } from '@/hooks/useInitRecentPage';
const App = () => {
useInitRecentTopic();
useInitRecentResource();
useInitRecentPage();
return <YourComponents />;
};
import { useSessionStore } from '@/store/session';
import { recentSelectors } from '@/store/session/selectors';
const Component = () => {
const recentTopics = useSessionStore(recentSelectors.recentTopics);
const isInit = useSessionStore(recentSelectors.isRecentTopicsInit);
if (!isInit) return <div>Loading...</div>;
return (
<div>
{recentTopics.map((topic) => (
<div key={topic.id}>{topic.title}</div>
))}
</div>
);
};
const { data: recentTopics, isLoading } = useInitRecentTopic();
const recentTopics = useSessionStore(recentSelectors.recentTopics);
// Type: RecentTopic[]
const isInit = useSessionStore(recentSelectors.isRecentTopicsInit);
// Type: boolean
RecentTopic type:
interface RecentTopic {
agent: {
avatar: string | null;
backgroundColor: string | null;
id: string;
title: string | null;
} | null;
id: string;
title: string | null;
updatedAt: Date;
}
const recentResources = useSessionStore(recentSelectors.recentResources);
// Type: FileListItem[]
const isInit = useSessionStore(recentSelectors.isRecentResourcesInit);
const recentPages = useSessionStore(recentSelectors.recentPages);
const isInit = useSessionStore(recentSelectors.isRecentPagesInit);
Weekly Installs
358
Repository
GitHub Stars
74.3K
First Seen
Jan 27, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
codex314
opencode312
gemini-cli311
github-copilot297
claude-code277
cursor273
Flutter应用架构设计指南:分层结构、数据层实现与最佳实践
3,400 周安装