尽管使用了 target="_blank",但 React Markdown 链接不会在新选项卡中打开

cts*_*cts 9 javascript hyperlink reactjs react-markdown

小组件看起来像这样:

// @flow
import ReactMarkdown from "react-markdown";
import type { Node } from "react";

function LinkRenderer(props: any) {
  return (
    <a href={props.href} target="_blank" rel="noreferrer">
      {props.children}
    </a>
  );
}

type Props = {
  children: Node,
};

const MarkdownRenderer = ({ children }: Props) => {
  return (
    <ReactMarkdown components={{ link: LinkRenderer }}>
      {children}
    </ReactMarkdown>
  );
};
Run Code Online (Sandbox Code Playgroud)

谁能建议为什么我的链接在使用此组件时无法在新选项卡中打开?

像在其他组件中一样实现该组件:

<MarkdownRenderer>{value}</MarkdownRenderer>

Run Code Online (Sandbox Code Playgroud)

rbk*_*nan 15

您需要将道具从“link”更新为“a”才能实现这一点。

  <ReactMarkdown components={{ a: LinkRenderer}}>
      {children}
  </ReactMarkdown>
Run Code Online (Sandbox Code Playgroud)

请找到沙盒链接

此外,如果您没有进行太多自定义并添加自定义渲染器只是为了在新选项卡中打开链接。您可以使用 'linkTarget' 属性并将其设置为 '_blank'


小智 6

您现在可以使用linkTarget使链接在新选项卡中打开:

<ReactMarkdown linkTarget="_blank" children={...} />
Run Code Online (Sandbox Code Playgroud)