mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-14 15:09:22 +00:00
- Introduce filterDOMProps utility to exclude Next.js specific props - Apply filtering to external links to ensure clean DOM attributes - Maintain consistent prop passing for internal Next.js links
37 lines
692 B
JavaScript
37 lines
692 B
JavaScript
import Link from 'next/link'
|
|
import { siteConfig } from '@/lib/config'
|
|
|
|
// 保留允许传给 <a> 的属性
|
|
const filterDOMProps = (props) => {
|
|
const {
|
|
passHref,
|
|
legacyBehavior,
|
|
...rest
|
|
} = props;
|
|
return rest;
|
|
};
|
|
const SmartLink = ({ href, children, ...rest }) => {
|
|
const LINK = siteConfig('LINK')
|
|
const isExternal = href.startsWith('http') && !href.startsWith(LINK)
|
|
|
|
if (isExternal) {
|
|
return (
|
|
<a
|
|
href={href}
|
|
target='_blank'
|
|
rel='noopener noreferrer'
|
|
{...filterDOMProps(rest)}>
|
|
{children}
|
|
</a>
|
|
)
|
|
}
|
|
|
|
return (
|
|
<Link href={href} {...rest} >
|
|
{children}
|
|
</Link>
|
|
)
|
|
}
|
|
|
|
export default SmartLink
|