语义 UI (React):如何在 Menu.List 元素中使用链接组件

Posted

技术标签:

【中文标题】语义 UI (React):如何在 Menu.List 元素中使用链接组件【英文标题】:Semantic UI (React): How to use Link components in Menu.List elements 【发布时间】:2017-06-24 04:23:52 【问题描述】:

我正在尝试获取一个语义 ui (react) 菜单列表,它应该与 react 路由器一起使用,这意味着我想使用 react routerLink 组件

如果我用这个...

<Menu.Item name='profile'>
    <Icon name='user' />
    My profile
</Menu.Item>

...它给了我结果:

<a class="item">
    <i aria-hidden="true" class="user icon"></i>
    My profile
</a>

但我想得到类似的东西

<Link to='profile'>
    <i aria-hidden="true" class="user icon"></i>
    My profile
</Link>

这个不行,因为语法错误:

<Menu.Item name='profile' as= <Link to='profile' /> >
    <Icon name='user' />
    My profile
</Menu.Item>

【问题讨论】:

【参考方案1】:

您需要使用 SUIR 的augmentation:

<Menu.Item as= Link  name='profile' to='profile'>
  <Icon name='user' />
  My profile
</Menu.Item>

【讨论】:

这也适用于 Button Like &lt;Button as=Link to='/'&gt;Home&lt;/Button&gt; 同意这是最好的答案。更少的代码并允许您保留主题样式。 请注意:由于 API 已更改,“我的个人资料”(字符串)需要包含在标签内。像这样我的个人资料 太好了,谢谢!知道如何传递方法吗?我需要在我的链接中包含 DELETE 方法【参考方案2】:

请改用browserHistory.push;它也由react-router 提供,作为Link 的替代品,但非标记:

import browserHistory from 'react-router';

redirect(to) 
    browserHistory.push(
       pathname: to
    );
 
//......
<Menu.Item name="profile" onClick=this.redirect('/profile')
    <Icon name='user' />
    My profile
</Menu.Item>

如果你想从name props 中得到/profile,改行:

<Menu.Item name="profile" onClick=(event, itemProps) => this.redirect(itemProps.name)

如果是这样,&lt;Menu onItemClick=... &gt;&lt;Menu.item onClick=... &gt; 更好

【讨论】:

使用browserHistory.push( pathname: to );browserHistory.push(to);有区别吗? 它支持both 但是,如果你想传递query 以及其他参数,pathname:to 更好

以上是关于语义 UI (React):如何在 Menu.List 元素中使用链接组件的主要内容,如果未能解决你的问题,请参考以下文章

带有 React 和 Vue 的语义 UI 和 jQuery

如何在React MUI中创建带标签的TextField

语义UI React侧边栏可推送功能

使用 React 语义 UI 进行条件渲染

模态语义 UI React 与 Bootstrap 发生冲突

关闭React语义UI模式与按钮和关闭图标