import classNames from 'classnames'; import React, { useMemo } from 'react'; interface ElementPreviewProps { element: { tagName: string; className?: string; id?: string; innerHTML?: string; outerHTML?: string; }; } export const ElementPreview: React.FC = ({ element }) => { // 提取元素标识符 const elementIdentifier = useMemo(() => { const parts = []; parts.push(element.tagName.toLowerCase()); if (element.className) { const classes = element.className.split(' ').filter(Boolean); if (classes.length > 0) { parts.push(`.${classes[0]}`); } } if (element.id) { parts.push(`#${element.id}`); } return parts.join(''); }, [element]); // 安全地渲染元素预览 // 注意:使用 dangerouslySetInnerHTML 需要确保内容是安全的 return (
{elementIdentifier}
{element.outerHTML ? (
) : element.innerHTML ? (
) : (
无法显示元素预览
)}
); };