点击按钮打开链接:IconButton嵌套Link无法跳转的正确实现方式
问题根因
你当前写法失效是因为Material UI的Tooltip组件要求直接子元素必须支持透传事件和ref,同时嵌套Link的写法容易和IconButton内置的点击事件逻辑产生冲突。普通Button嵌套能生效是组件内部事件处理逻辑的差异,两种组件更规范的写法都是统一用组件内置的component属性指定渲染为路由Link,不需要额外嵌套。
推荐正确实现
直接给IconButton指定component属性为你使用的路由库的Link组件,把跳转路径放到to属性中即可:
// 首先导入对应路由库的Link,以react-router为例 import { Link } from 'react-router-dom'; <Tooltip title="Open New Ticket"> <IconButton aria-label="filter list" component={Link} to="open-ticket" > <AddTwoToneIcon /> </IconButton> </Tooltip>
补充说明
- 如果需要使用绝对路径跳转,
to属性值前加斜杠即可:to="/open-ticket" - 该写法同样适用于普通
Button组件,比嵌套Link的写法更简洁,也不会出现事件冲突问题
内容的提问来源于stack exchange,提问作者Peter Penzov
相关产品推荐
相关产品推荐

