33

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

如果我用这个...

<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>
4

2 回答 2

89

您需要使用 SUIR 的增强功能:

<Menu.Item as={ Link } name='profile' to='profile'>
  <Icon name='user' />
  My profile
</Menu.Item>
于 2017-02-07T09:47:04.160 回答
7

改为使用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>

如果您想/profilenameprops 中获取,请通过以下方式更改行:

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

如果是这样,<Menu onItemClick={...} >那就比<Menu.item onClick={...} >

于 2017-02-07T03:28:22.423 回答