使用React Router 4.2
我的尝试是在单击导航链接时打开新标签,同时重定向到网站首页。
即:导航栏:单击“策略”
尽管下面的代码符合上述要求:这是明智的选择吗? 旨在在Routes.js上学习最佳做法。
//Routes.js
import HandbookDoc from './policies.pdf'
...
<Route
path="/registration/policies"
component={() => window.open(`${HandbookDoc}`,'_blank').then(window.location= '/')}
/>
....
//Navigation.js (using react-router-bootstrap)
<NavDropdown eventKey={3} id="formId" title="Registration">
<LinkContainer to="/registration/financial-aid">
<MenuItem eventKey={3.1}>Financial Aid</MenuItem>
</LinkContainer>
<LinkContainer to="/registration/policies">
<MenuItem eventKey={3.2}>Policies</MenuItem>
</LinkContainer>
</NavDropdown>
答案 0 :(得分:3)
您无需为要实现的目标创建新路线。您可以像这样向onClick
添加MenuItem
处理程序:
<NavDropdown eventKey={3} id="formId" title="Registration">
<LinkContainer to="/registration/financial-aid">
<MenuItem eventKey={3.1}>Financial Aid</MenuItem>
</LinkContainer>
<LinkContainer
to="/">
<MenuItem onClick={this.handlePoliciesClick} eventKey={3.2}>Policies</MenuItem>
</LinkContainer>
</NavDropdown>
然后在同一组件中添加处理程序:
handlePoliciesClick = () => {
window.open(HandbookDoc, '_blank');
}
请记住要导入您的HandbookDoc
。