reactjs - 带有 react-router-dom 链接的 SpeedDialAction

标签 reactjs material-ui

我的 SpeedDialAction看起来像这样:

<SpeedDialAction key="Add" icon={<AddIcon />} tooltipTitle="Add" />

我想在单击操作时导航到/add。有没有办法在不使用 onClick 的情况下做到这一点?并使用推送 /add手动到历史?

例如一个按钮允许这样的事情:

<Button
  component={Link}
  to={`ticket/${ticket.id}`}
  variant="contained"
  color="primary"
>
  Details
</Button>

最佳答案

您可以用 <Link /> 包裹图标.

基于 their例如,您可以像这样包装它:

const withLink = (to, children) => <Link to={to}>{children}</Link>;

const actions = [
  { icon: withLink("/about", <LiveHelpIcon />), name: "About" },
  { icon: withLink("/users", <GroupIcon />), name: "Users" }
];

(你显然也可以用“正常”的方式来做)

{ icon: <Link to="/about"><LiveHelpIcon /></Link>), name: "About" },

然后,包裹 <SpeedDial /><Router>并添加 <Switch>就在它之后,就像这样:

<Router>
  <SpeedDial
    ariaLabel="SpeedDial example"
    className={classes.speedDial}
    icon={<SpeedDialIcon />}
    onClose={handleClose}
    onOpen={handleOpen}
    open={open}
  >
    {actions.map(action => (
      <SpeedDialAction
        key={action.name}
        icon={action.icon}
        tooltipTitle={action.name}
        onClick={handleClose}
      />
    ))}
  </SpeedDial>
  <Switch>
    <Route path="/about">
      <div>About</div>
    </Route>
    <Route path="/users">
      <div>Users</div>
    </Route>
    <Route path="/">
      <div>Home</div>
    </Route>
  </Switch>
</Router>

工作示例:https://codesandbox.io/s/material-ui-speeddial-react-router-dom-bmmwi

关于reactjs - 带有 react-router-dom 链接的 SpeedDialAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60522401/

相关文章:

javascript - react : map is not a function on an empty array

javascript - 如何使用 firebase 在 React 中创建管理状态?

html - 我正在尝试在新选项卡中打开此链接,这样用户就不必离开我的网站,但它不适用于 _blank

javascript - Prop 类型失败 : Invalid prop `lg` supplied to `ForwardRef(Grid)`

reactjs - React Hook useCallback 有一个不必要的依赖 : 'price' . 要么排除它要么删除依赖数组 react-hooks/exhaustive-deps

javascript - Reactjs 按键正则表达式?

css - 是否只允许某些 css 属性与 Gatsby activeStyles 对象一起使用?

javascript - 如何不通过整个响应映射对象

reactjs - 创建 MUI v5 主题,如何覆盖 AppBar 子组件的颜色?

reactjs - 如何使用MUI风格的组件设置边框颜色?