带有 react-bootstrap 的下拉列表在构建静态文件中有效,但在与 Web 服务器一起提供时无效
Dropdown with react-bootstrap works in build static file but not when served with web server
我用 react-bootstrap 和 react-mini-router 构建了一个简单的页面。
我在 react-bootstrap 示例中使用相同的代码来导航下拉菜单:
render: function() {
var userName = 'Superman';
return (
<Navbar brand="React-Bootstrap">
<Nav>
<NavItem eventKey={1} href="/">Home</NavItem>
<NavItem eventKey={2} href="/About">About</NavItem>
<NavDropdown eventKey={3} title={userName} id="basic-nav-dropdown" onClick={this.userNameClick}>
<MenuItem eventKey="1">Action</MenuItem>
<MenuItem eventKey="2">Another action</MenuItem>
<MenuItem eventKey="3">Something else here</MenuItem>
<MenuItem divider />
<MenuItem eventKey="4">Separated link</MenuItem>
</NavDropdown>
</Nav>
</Navbar>
)
}
});
当我构建页面并打开索引时,如您所见 here,菜单中的下拉菜单按预期工作,只是放下菜单而不导航页面,无论您是否在 'home' 或 'about'。
然而,当我使用 gulp-connect 或 python SimpleHTTPServer 在本地主机上提供页面时,总是按下拉菜单 changes/navigates 页面到 'home',即使下拉菜单不是 link.
怎么会这样?
示例的完整代码可以在 here 中找到,问题可以通过 运行 gulp 复制,这将启动 Web 服务器。
更新:问题是 react-bootstrap 和 react-mini-router 之间的冲突,你可以在 this Github issue 看到 progress/solution。
我的临时修复是在 RouterMixin 的 handleClick 函数中捕获事件。
handleClick: function(evt) {
var dropdownevt = (evt.path[0].id === 'acc-dropdown');
if (url && self.matchRoute(url.pathname) && !dropdownevt) { ...
我用 react-bootstrap 和 react-mini-router 构建了一个简单的页面。
我在 react-bootstrap 示例中使用相同的代码来导航下拉菜单:
render: function() {
var userName = 'Superman';
return (
<Navbar brand="React-Bootstrap">
<Nav>
<NavItem eventKey={1} href="/">Home</NavItem>
<NavItem eventKey={2} href="/About">About</NavItem>
<NavDropdown eventKey={3} title={userName} id="basic-nav-dropdown" onClick={this.userNameClick}>
<MenuItem eventKey="1">Action</MenuItem>
<MenuItem eventKey="2">Another action</MenuItem>
<MenuItem eventKey="3">Something else here</MenuItem>
<MenuItem divider />
<MenuItem eventKey="4">Separated link</MenuItem>
</NavDropdown>
</Nav>
</Navbar>
)
}
});
当我构建页面并打开索引时,如您所见 here,菜单中的下拉菜单按预期工作,只是放下菜单而不导航页面,无论您是否在 'home' 或 'about'。
然而,当我使用 gulp-connect 或 python SimpleHTTPServer 在本地主机上提供页面时,总是按下拉菜单 changes/navigates 页面到 'home',即使下拉菜单不是 link.
怎么会这样?
示例的完整代码可以在 here 中找到,问题可以通过 运行 gulp 复制,这将启动 Web 服务器。
更新:问题是 react-bootstrap 和 react-mini-router 之间的冲突,你可以在 this Github issue 看到 progress/solution。
我的临时修复是在 RouterMixin 的 handleClick 函数中捕获事件。
handleClick: function(evt) {
var dropdownevt = (evt.path[0].id === 'acc-dropdown');
if (url && self.matchRoute(url.pathname) && !dropdownevt) { ...