refactor(components): 重构 Playground组件中的数据展示逻辑
-移除了 useEffect 钩用,改用函数式组件的按需渲染 - 优化了 Header组件的点击事件处理,提高代码复用性 - 统一了数据加载和展示的逻辑,提升组件可维护性
This commit is contained in:
parent
e0e41d7e21
commit
50af75d347
@ -1,4 +1,4 @@
|
|||||||
import React, { useEffect, useMemo } from "react"
|
import React, { useMemo } from "react"
|
||||||
import { DataNavigation } from "@/components/Common/DataNavigation.tsx"
|
import { DataNavigation } from "@/components/Common/DataNavigation.tsx"
|
||||||
import { Card, Skeleton } from "antd"
|
import { Card, Skeleton } from "antd"
|
||||||
import { useMessageOption } from "@/hooks/useMessageOption.tsx"
|
import { useMessageOption } from "@/hooks/useMessageOption.tsx"
|
||||||
@ -136,7 +136,8 @@ export const PlaygroundData: React.FC<Props> = ({className}) => {
|
|||||||
return messages.length > 0 ? "推荐数据" : "热点数据"
|
return messages.length > 0 ? "推荐数据" : "热点数据"
|
||||||
}, [messages])
|
}, [messages])
|
||||||
|
|
||||||
useEffect(() => {
|
const showMore = () => {
|
||||||
|
setShowPlayground(false)
|
||||||
setDetailHeader(
|
setDetailHeader(
|
||||||
<Header
|
<Header
|
||||||
title={title}
|
title={title}
|
||||||
@ -145,15 +146,13 @@ export const PlaygroundData: React.FC<Props> = ({className}) => {
|
|||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
setDetailMain(<Main loading={iodLoading} data={data} truncate={false} />)
|
setDetailMain(<Main loading={iodLoading} data={data} truncate={false} />)
|
||||||
}, [title, iodLoading, data])
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card
|
<Card className={`${className}`} hoverable>
|
||||||
className={`${className}`}
|
|
||||||
hoverable>
|
|
||||||
<div className="h-full flex flex-col gap-2 relative">
|
<div className="h-full flex flex-col gap-2 relative">
|
||||||
{/* 数据导航 */}
|
{/* 数据导航 */}
|
||||||
<Header title={title} onClick={() => setShowPlayground(false)} />
|
<Header title={title} onClick={showMore} />
|
||||||
{/* 数据列表 */}
|
{/* 数据列表 */}
|
||||||
<Main loading={iodLoading} data={data.slice(0, 3)} />
|
<Main loading={iodLoading} data={data.slice(0, 3)} />
|
||||||
</div>
|
</div>
|
||||||
|
@ -128,12 +128,17 @@ export const PlaygroundScene: React.FC<Props> = ({ className }) => {
|
|||||||
return messages.length > 0 ? "推荐场景" : "热点场景"
|
return messages.length > 0 ? "推荐场景" : "热点场景"
|
||||||
}, [messages])
|
}, [messages])
|
||||||
|
|
||||||
useEffect(() => {
|
const showMore = () => {
|
||||||
|
setShowPlayground(false)
|
||||||
setDetailHeader(
|
setDetailHeader(
|
||||||
<Header title={title} showButton={false} onClick={() => setShowPlayground(false)} />
|
<Header
|
||||||
|
title={title}
|
||||||
|
showButton={false}
|
||||||
|
onClick={() => setShowPlayground(false)}
|
||||||
|
/>
|
||||||
)
|
)
|
||||||
setDetailMain(<Main loading={iodLoading} data={data} truncate={false} />)
|
setDetailMain(<Main loading={iodLoading} data={data} truncate={false} />)
|
||||||
}, [title, iodLoading, data])
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card
|
<Card
|
||||||
@ -141,7 +146,7 @@ export const PlaygroundScene: React.FC<Props> = ({ className }) => {
|
|||||||
hoverable>
|
hoverable>
|
||||||
<div className="h-full flex flex-col gap-2 relative">
|
<div className="h-full flex flex-col gap-2 relative">
|
||||||
{/* 数据导航 */}
|
{/* 数据导航 */}
|
||||||
<Header title={title} onClick={() => setShowPlayground(false)} />
|
<Header title={title} onClick={showMore} />
|
||||||
|
|
||||||
{/* 数据列表 */}
|
{/* 数据列表 */}
|
||||||
<Main loading={iodLoading} data={data.slice(0, 3)} />
|
<Main loading={iodLoading} data={data.slice(0, 3)} />
|
||||||
|
@ -138,7 +138,8 @@ export const PlaygroundTeam: React.FC<Props> = ({ className }) => {
|
|||||||
return messages.length > 0 ? "推荐团队" : "热点团队"
|
return messages.length > 0 ? "推荐团队" : "热点团队"
|
||||||
}, [messages])
|
}, [messages])
|
||||||
|
|
||||||
useEffect(() => {
|
const showMore = () => {
|
||||||
|
setShowPlayground(false)
|
||||||
setDetailHeader(
|
setDetailHeader(
|
||||||
<Header
|
<Header
|
||||||
title={title}
|
title={title}
|
||||||
@ -146,16 +147,15 @@ export const PlaygroundTeam: React.FC<Props> = ({ className }) => {
|
|||||||
onClick={() => setShowPlayground(false)}
|
onClick={() => setShowPlayground(false)}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
setDetailMain(
|
setDetailMain(<Main loading={iodLoading} data={data} truncate={false} flat={false} />)
|
||||||
<Main loading={iodLoading} data={data} truncate={false} flat={false} />
|
}
|
||||||
)
|
|
||||||
}, [title, iodLoading, data])
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card className={`${className}`} hoverable>
|
<Card className={`${className}`} hoverable>
|
||||||
<div className="h-full flex flex-col gap-2 relative">
|
<div className="h-full flex flex-col gap-2 relative">
|
||||||
{/* 数据导航 */}
|
{/* 数据导航 */}
|
||||||
<Header title={title} onClick={() => setShowPlayground(false)} />
|
<Header title={title} onClick={showMore} />
|
||||||
{/* 数据列表 */}
|
{/* 数据列表 */}
|
||||||
<Main loading={iodLoading} data={data.slice(0, 3)} />
|
<Main loading={iodLoading} data={data.slice(0, 3)} />
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user