链接
在正文字段中使用 Next.js Link 组件进行内联链接。
要将内联 <a />
标签替换为 Next.js Link
组件,我们可以使用 HTML 解析器,就像我们对图像所做的那样。
依赖项
yarn add html-react-parser
组件
更新来自图像的组件以处理内联链接。
components/body.tsx
import { HTMLReactParserOptions, domToReact } from "html-react-parser" import { Element } from "domhandler/lib/node"import parse from "html-react-parser"import Image from "next/image"import Link from "next/link"
const options: HTMLReactParserOptions = { replace: (domNode) => { if (domNode instanceof Element && domNode.name === "img") { const { src, alt, width, height } = domNode.attribs
return ( <Image src={`${process.env.NEXT_PUBLIC_DRUPAL_BASE_URL}/${src}`} width={`${width}px`} height={`${height}px`} alt={alt} layout="intrinsic" objectFit="cover" /> ) }
if (domNode.name === "a") { const { href, class: className } = domNode.attribs
return ( <Link href={href} passHref> <a className={className}>{domToReact(domNode.children)}</a> </Link> ) } },}
export function Body({ value }: { value: string }) { return <>{parse(value, options)}</>}
用法
pages/index.tsx
import { Body } from "components/body"
export default function Page({ node }) { return ( <div variant="container"> <h1>{node.title}</h1> <Body value={node.body.processed} /> </div> )}
了解更多关于 next/link 的信息。