首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >响应引导NavDropdown链接重写NavDropdown.Item链接

响应引导NavDropdown链接重写NavDropdown.Item链接
EN

Stack Overflow用户
提问于 2022-01-27 17:18:00
回答 1查看 1.3K关注 0票数 1

我们有一个关于我们的React应用程序,我们正在尝试在一个<NavDropdown.Item />中嵌套几个<NavDropdown />

在上面的屏幕截图中,单击Tools路由到/tools,然后单击下拉选项应该链接到/tools/shot-charts/tools/team-stats-graphs等。您可以在下面的代码中看到这一点:

代码语言:javascript
复制
import { Nav, Navbar, NavDropdown } from 'react-bootstrap';

<Navbar.Collapse id='basic-navbar-nav'>
    <div className='navbar-nav-wrapper'>
        <Nav>
            <NavDropdown
                title='Tools'
                as={Link}
                to='/tools'
                className={`${isTools ? 'selected' : ''}`}
                onMouseEnter={() => setIsToolsHovered(true)}
                onMouseLeave={() => setIsToolsHovered(false)}
                onClick={() => history.push('/tools')}
                show={isToolsHovered}
            >
                <NavDropdown.Item as={Link} to={'/tools/shot-charts'}>Shot Charts</NavDropdown.Item>
                <NavDropdown.Item as={Link} to={'/tools/team-scatter'}>Team Stats Graphs</NavDropdown.Item>
                <NavDropdown.Item as={Link} to={'/tools/player-scatter'}>Player Stats Graphs</NavDropdown.Item>
                <NavDropdown.Item as={Link} to={'/tools/model-fitting'}>Linear Regressions</NavDropdown.Item>
            </NavDropdown>
        </Nav>
    </div>
</Navbar.Collapse>

当前,当单击Shot Charts时,页面呈现两次,首先使用/tools/shot-charts url,然后紧接着呈现到/tools url。这是个问题。看来,onClick={() => history.push('/tools')} on <NavDropdown />正在触发,尽管单击了快照图表,而不是Tools

如果我们删除onClick={() => history.push('/tools')},那么4个下拉按钮可以工作,但是单击Tools不会改变页面。看起来as={Link}to='/tools'<NavDropdown />上并没有做任何事情来使Tools可点击。

EN

回答 1

Stack Overflow用户

发布于 2022-01-27 17:36:28

我不认为应该有一个链接to an onClick来有效地在外部NavDropdown上做同样的事情,但是问题是来自嵌套NavDropdown.Item LinkonClick事件正在传播到NavDropdown

我建议删除NavDropdown上的NavDropdown处理程序,并将一个onClick处理程序添加到嵌套的NavDropdown.Item组件中,以停止单击事件的传播。

代码语言:javascript
复制
const stopClickPropagation = event => event.stopPropagation();

...

<NavDropdown
  title='Tools'
  as={Link}
  to='/tools'
  className={`${isTools ? 'selected' : ''}`}
  onMouseEnter={() => setIsToolsHovered(true)}
  onMouseLeave={() => setIsToolsHovered(false)}
  show={isToolsHovered}
>
  <NavDropdown.Item
    as={Link}
    to={'/tools/shot-charts'}
    onClick={stopClickPropagation}
  >
    Shot Charts
  </NavDropdown.Item>
  <NavDropdown.Item
    as={Link}
    to={'/tools/team-scatter'}
    onClick={stopClickPropagation}
  >
    Team Stats Graphs
  </NavDropdown.Item>
  <NavDropdown.Item
    as={Link}
    to={'/tools/player-scatter'}
    onClick={stopClickPropagation}
  >
    Player Stats Graphs
  </NavDropdown.Item>
  <NavDropdown.Item
    as={Link}
    to={'/tools/model-fitting'}
    onClick={stopClickPropagation}
  >
    Linear Regressions
  </NavDropdown.Item>
</NavDropdown>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70882902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档