From d4d9e1fe658724c8dfdc386e0ea6c0f9f233c1ab Mon Sep 17 00:00:00 2001 From: archer <545436317@qq.com> Date: Mon, 14 Aug 2023 10:21:20 +0800 Subject: [PATCH] fix: markdonw link --- client/src/components/Markdown/Link.tsx | 32 ------------------------ client/src/components/Markdown/index.tsx | 3 +-- 2 files changed, 1 insertion(+), 34 deletions(-) delete mode 100644 client/src/components/Markdown/Link.tsx diff --git a/client/src/components/Markdown/Link.tsx b/client/src/components/Markdown/Link.tsx deleted file mode 100644 index b212f4595..000000000 --- a/client/src/components/Markdown/Link.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import React, { useMemo } from 'react'; -import { Box } from '@chakra-ui/react'; -import Image from './img/Image'; - -const regex = /((http|https|ftp):\/\/[^\s\u4e00-\u9fa5\u3000-\u303f\uff00-\uffef]+)/gi; - -const Link = (props: { href?: string; children?: any }) => { - const Html = useMemo(() => { - const decText = decodeURIComponent(props.href || ''); - - return decText.replace(regex, (match, p1) => { - let text = decText === props.children?.[0] ? p1 : props.children?.[0]; - const isInternal = /^\/#/i.test(p1); - const target = isInternal ? '_self' : '_blank'; - - if (props?.children?.[0]?.props?.node?.tagName === 'img') { - // eslint-disable-next-line @next/next/no-img-element - text = ``; - } - - return `${text}`; - }); - }, [props.children, props.href]); - - return typeof Html === 'string' ? ( - - ) : ( - Html - ); -}; - -export default React.memo(Link); diff --git a/client/src/components/Markdown/index.tsx b/client/src/components/Markdown/index.tsx index 5134a076a..edd310ba8 100644 --- a/client/src/components/Markdown/index.tsx +++ b/client/src/components/Markdown/index.tsx @@ -9,7 +9,6 @@ import 'katex/dist/katex.min.css'; import styles from './index.module.scss'; import dynamic from 'next/dynamic'; -import Link from './Link'; import CodeLight from './CodeLight'; const MermaidCodeBlock = dynamic(() => import('./img/MermaidCodeBlock')); @@ -50,7 +49,6 @@ const Markdown = ({ }) => { const components = useMemo( () => ({ - a: Link, img: Image, pre: 'div', p: 'div', @@ -68,6 +66,7 @@ const Markdown = ({ rehypePlugins={[RehypeKatex]} // @ts-ignore components={components} + linkTarget={'_blank'} > {source}