"use client"; import dynamic from "next/dynamic"; import type { Block } from "@/types/page"; import TextBlockView from "@/components/blocks/TextBlock"; import HeroBlockView from "@/components/blocks/HeroBlock"; import SettingsBlockView from "@/components/blocks/SettingsBlock"; // 客户端大组件按需加载(减少首屏 JS) const ChartBlockView = dynamic(() => import("@/components/blocks/ChartBlock"), { ssr: false, // 图表多数只在浏览器渲染 loading: () => (
图表加载中…
), }); export function RenderBlock({ block }: { block: Block }) { switch (block.__typename) { case "TextBlockType": return ; case "ChartBlockType": return ; case "SettingsBlockType": return ; case "HeroBlockType": return ; default: console.warn(`未知块类型:${(block as any).__typename ?? "Unknown"}`, block); return (
未知块类型:{(block as any).__typename ?? "Unknown"}
); } }