Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用React路由器嵌套链接?_Javascript_Reactjs_React Router - Fatal编程技术网

Javascript 如何使用React路由器嵌套链接?

Javascript 如何使用React路由器嵌套链接?,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我有以下错误显示在 if(isReply&&detailView){ replyUsername=( 答复{parentUsername} {username} {date} {text} {repress.length}{likes.length} ) } 有办法解决这个问题吗?单击空白链接到状态本身,我还希望能够链接到用户名。链接(或锚定标记)不能是其他锚定标记的子项。如果只想渲染3个链接,则需要取消渲染后两个链接,并在与第一个链接相同的级别上进行渲染。使用React片段返回单个节点

我有以下错误显示在

if(isReply&&detailView){
replyUsername=(
答复{parentUsername}

{username}

{date}

{text}

{repress.length}{likes.length}

) }
有办法解决这个问题吗?单击空白链接到状态本身,我还希望能够链接到用户名。

链接(或锚定标记)不能是其他锚定标记的子项。如果只想渲染3个链接,则需要取消渲染后两个链接,并在与第一个链接相同的级别上进行渲染。使用React片段返回单个节点

if (isReply && detailView) {
  replyUsername = (
    <>
      <Link to={`/${username}/status/${id}`}>Place some link text here</Link>
      <Link to={`/${parentUsername}`}>
        <p>Replying to {parentUsername}</p>
      </Link>
      <Link to={`/${username}`}>
        <p>{username}</p>
      </Link>
      <p>{date}</p>
      <p>{text}</p>
      <p>{replies.length} {likes.length}</p>
    </>
  )
}

这里的问题不是react路由器嵌套,而是正常的文档结构和
标记

一般的答案是,有一个包含链接的链接是没有意义的,这对可访问性是有害的。(JSX中的每个
标记都在DOM中生成一个
标记。)

最有可能的情况是,您应该重新调整布局,以便有一个包含日期、文本和其他信息的链接,在该链接下,有两个您想要的其他链接

为了让它按照您的意愿工作,我认为您需要这样一个容器元素,以便按照您想要的方式定位事物:

if (isReply && detailView) {
  replyUsername = (
    <div class="container">
      <Link to={`/${username}/status/${id}`}>
        <p>{date}</p>
        <p>{text}</p>
        <p>{replies.length} {likes.length}</p>
      </Link>
      <Link to={`/${parentUsername}`}>
        <p>Replying to {parentUsername}</p>
      </Link>
      <Link to={`/${username}`}>
        <p>{username}</p>
      </Link>
    </div>
  )
}
if(isReply&&detailView){
replyUsername=(
{date}

{text}

{repress.length}{likes.length}

答复{parentUsername}

{username}

) }

通常,如果可以,您希望避免在其他可单击元素中包含可单击元素(在屏幕截图中,看起来您可以)使您的选项卡顺序和可访问性有意义。

您只想显示3个链接吗?如果您使用
来处理单击事件,您还应该指定
tabindex
,使其保持键盘可访问。@Ryan当然,绝对,但是由于可访问性在最初的问题中不是一个问题,所以我没有具体地解决它。在这种情况下,应该添加一个使用相同回调函数的
onPress
处理程序,以保持其键盘焦点和可访问性。
if (isReply && detailView) {
  replyUsername = (
    <div onClick={() => history.push(`/${username}/status/${id}`)} tabIndex={0}>
      <Link to={`/${parentUsername}`}>
        <p>Replying to {parentUsername}</p>
      </Link>
      <Link to={`/${username}`}>
        <p>{username}</p>
      </Link>
      <p>{date}</p>
      <p>{text}</p>
      <p>{replies.length} {likes.length}</p>
    </div>
  )
}
if (isReply && detailView) {
  replyUsername = (
    <div class="container">
      <Link to={`/${username}/status/${id}`}>
        <p>{date}</p>
        <p>{text}</p>
        <p>{replies.length} {likes.length}</p>
      </Link>
      <Link to={`/${parentUsername}`}>
        <p>Replying to {parentUsername}</p>
      </Link>
      <Link to={`/${username}`}>
        <p>{username}</p>
      </Link>
    </div>
  )
}