【问题标题】:Menu.Item active state not working with NavLink (Semantic-UI-React)Menu.Item 活动状态不适用于 NavLink (Semantic-UI-React)
【发布时间】:2018-06-26 07:02:14
【问题描述】:

我正在为导航栏使用{ BrowserRouter } 和以下代码。

<Menu stackable>
  <Menu.Item as={NavLink} exact to='/' content='Home' />
  <Menu.Item as={NavLink} exact to='/abc' content='ABC' />
  <Menu.Item as={NavLink} exact to='/def' content='DEF' />
</Menu>

当我在链接之间导航时,活动状态不会改变。只有当我刷新浏览器时,活动状态才会更改为浏览器 url 当前所在的链接。

任何帮助将不胜感激!

【问题讨论】:

  • 主动道具助你完成任务。检查我的答案

标签: reactjs react-router semantic-ui semantic-ui-react


【解决方案1】:

Menu.item 不会自动改变,直到你设置了 props active=true 并且真正的值应该取决于当前的路由器 url。

<Menu stackable>
  <Menu.Item active={this.isActive('/')} as={NavLink} exact to='/' content='Home' />
  <Menu.Item active={this.isActive('/abc')} as={NavLink} exact to='/abc' content='ABC' />
  <Menu.Item active={this.isActive('/def')} as={NavLink} exact to='/def' content='DEF' />
</Menu>

从语义用户界面看下面的例子 - https://react.semantic-ui.com/collections/menu#types-basic

import React, { Component } from 'react'
import { Menu } from 'semantic-ui-react'

export default class MenuExampleBasic extends Component {
  state = {}

  handleItemClick = (e, { name }) => this.setState({ activeItem: name })

  render() {
    const { activeItem } = this.state

    return (
      <Menu>
        <Menu.Item
          name='editorials'
          active={activeItem === 'editorials'}
          onClick={this.handleItemClick}
        >
          Editorials
        </Menu.Item>

        <Menu.Item name='reviews' active={activeItem === 'reviews'} onClick={this.handleItemClick}>
          Reviews
        </Menu.Item>

        <Menu.Item
          name='upcomingEvents'
          active={activeItem === 'upcomingEvents'}
          onClick={this.handleItemClick}
        >
          Upcoming Events
        </Menu.Item>
      </Menu>
    )
  }
}

【讨论】:

    猜你喜欢
    • 2018-08-29
    • 2018-05-05
    • 2018-11-21
    • 2018-06-14
    • 2022-06-28
    • 1970-01-01
    • 2018-12-12
    • 2018-12-15
    • 2019-06-16
    相关资源
    最近更新 更多