React Link 组件跨越 div 的整个宽度

Posted

技术标签:

【中文标题】React Link 组件跨越 div 的整个宽度【英文标题】:React Link component spans the entire width of the div 【发布时间】:2020-11-02 14:07:46 【问题描述】:

我有一个 react Link 组件,其中包含我制作的自定义 Button 组件。 Link 组件的宽度会自动设置为适合其父 div,从而使不应点击的区域成为可点击区域。我弄乱了代码,并想到将 Link 放入 Span 中,从而生成此代码。

<span><Link to="/"><Button buttonStyle="primary">Create Account</Button></Link></span>

这很有效,但我只是有点明白为什么。有人可以完整解释一下吗?为什么这会修复链接和按钮组件的可点击区域?

【问题讨论】:

将链接设置为:display: inline-block - 更多信息在这里***.com/questions/34766562/… 【参考方案1】:

Link 呈现一个&lt;a&gt; 标签,默认情况下不包含其中的内容。因此,当您放置按钮时,我相信该按钮的样式为display: block。因此,按钮显示为相对于 &lt;a&gt; 标记的父级的阻塞元素。将link 的样式设置为display: inline-block。在这种情况下,标签将包含按钮,并且相对于其父级位于内联块元素中。

<Link to="/" style=display: 'inline-block'>
    <Button buttonStyle="primary">Create Account</Button>
  </Link>

【讨论】:

【参考方案2】:

来自反应路由器的Link 组件将您传递为children 的所有内容包装起来,在您的示例中为Button 组件,带有&lt;a&gt;&lt;/a&gt; 元素。该元素默认为display:block,这意味着它将占据拥有Link 组件的父元素的全宽。

因此,您需要将父组件限制为所需的宽度,或者将类或样式传递给Link 组件并以这种方式设置样式:

<span>
  <Link to="/" style=width: '100px'>
    <Button buttonStyle="primary">Create Account</Button>
  </Link>
</span>

【讨论】:

以上是关于React Link 组件跨越 div 的整个宽度的主要内容,如果未能解决你的问题,请参考以下文章

获取一个 div 遍历整个页面

宽度 100%,周围有白色边框。为啥?

如何使用 React MUI 覆盖 TextField 组件的宽度?

react-native中带有/ flexbox的全宽按钮

将图像设置为跨越整个标题宽度

列出具有跨越整个宽度的边框的项目