如何使 Material UI 反应按钮充当 react-router-dom 链接?

Posted

技术标签:

【中文标题】如何使 Material UI 反应按钮充当 react-router-dom 链接?【英文标题】:How to make a Material UI react Button act as a react-router-dom Link? 【发布时间】:2019-01-09 13:42:01 【问题描述】:

如何使 Material UI 响应 Button 组件作为 react-router-domLink 组件而不会丢失其原始样式?就像点击时改变路线一样。

import Button from '@material-ui/core/Button';

<Button variant="contained" color="primary">
    About Page
</Button>

类似这样,但保持原来的Button 风格:

import Button from '@material-ui/core/Button';
import  Link  from 'react-router-dom';

<Button variant="contained" color="primary">
    <Link to="/about">
        About Page
    </Link>
</Button>

【问题讨论】:

Material-ui adding Link component from react-router的可能重复 【参考方案1】:

好的,这很容易,我不知道为什么它不适合我:

就这样吧:

import Button from '@material-ui/core/Button';
import  Link  from 'react-router-dom';

<Button component=Link to="/about" variant="contained" color="primary">
  About Page
</Button>

您可以在https://next.material-ui.com/guides/routing/找到更多详细信息。

【讨论】:

如何为Link指定更多属性,如exact 这超出了这个问题的范围,但无论如何要使这个动态?说我不传递链接道具,不要使用component= Link 现在在 MUI 5 版本中看起来有点不同。 mui.com/guides/routing【参考方案2】:

您需要将&lt;Button /&gt; 包装在&lt;Link /&gt; 组件内。

import Button from '@material-ui/core/Button';
import  Link  from 'react-router-dom';

const ButtonWithLink = () => (
  <Link to="/about">
   <Button variant="contained" color="primary">
     About Page
   </Button>
  </Link>
)

【讨论】:

这种方式也可以。只需提供样式即可从Link 中删除下划线。谢谢 这对于我遇到的问题非常有帮助,因为我有一个 Link 的包装器,因此 component=Link 方法由于某种原因导致 Material-UI 的样式丢失。此方法恢复了样式。【参考方案3】:

MUI 5 进一步简化了这一点。只需提供带有 href 属性的 MUI Button,如下所示:

import Button from '@mui/material/Button';


<Button href="/" variant="contained">
  Link
</Button>

【讨论】:

以上是关于如何使 Material UI 反应按钮充当 react-router-dom 链接?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 Material-UI Dialog 在 React 中工作

如何让输入单选元素在反应 [material-ui] 中水平对齐?

使用对话框中的状态按钮或 Material UI 中的警报来反应内存泄漏警告

Material UI - 按钮标签中的字体大小

如何使 Material UI 图标表现得像锚标签?

与 Material-UI 反应找不到模块