import React from 'react'; import Editor from 'react-simple-code-editor'; import CopyToClipboard from 'react-copy-to-clipboard'; import { useToggle } from 'react-use'; import ReactTooltip from 'react-tooltip'; import IconCopy from 'react-feather/dist/icons/clipboard'; import IconCode from 'react-feather/dist/icons/code'; import { highlight, languages } from 'prismjs/components/prism-core'; import { StyledContainer, StyledIconWrapper } from './style'; import 'prismjs/components/prism-clike'; import 'prismjs/components/prism-javascript'; import 'prismjs/components/prism-markup'; require('prismjs/components/prism-jsx'); interface Props { code: string; title?: React.ReactNode; desc?: React.ReactNode; } export const HappyBox: React.FC = ({ code, title, desc, children }) => { const [isEditVisible, toggleEditVisible] = useToggle(false); return (
{children}
{title || '示例'}

{desc || '暂无描述'}

alert('复制成功')}>
{renderEditor()}
); function renderEditor() { if (!isEditVisible) return null; return (
{}} highlight={code => highlight(code, languages.jsx)} padding={10} className="container__editor" style={{ fontFamily: '"Fira code", "Fira Mono", monospace', fontSize: 14, }} />
); } }; export default HappyBox;