【发布时间】:2019-05-20 06:57:09
【问题描述】:
您好,我正在 next.js 中切换导航,它工作正常,只是我希望导航在路线更改时再次关闭。
例如,如果我在主页上并切换导航,导航会打开并显示指向“关于”页面的链接。如果我点击该链接,我会按预期进入关于页面 - 但导航仍然打开!
我已经尝试了一些东西 - 我想我想利用 onRouteChangeComplete(url) 但我正在努力更新 navActive 状态。
我的 page.js 文件:
class Page extends Component {
state = {
navActive: false
};
toggle = () => {
this.setState({
navActive: !this.state.navActive
});
};
render() {
return (
<ThemeProvider theme={theme}>
<StyledPage className="full-page-wrapper">
<Meta />
<Header navActive={this.state.navActive} toggle={this.toggle} />
<PrimaryContent>{this.props.children}</PrimaryContent>
<GlobalStyle />
</StyledPage>
</ThemeProvider>
);
}
}
然后是我的头文件:
class Header extends React.Component {
render() {
return (
<HeaderSide
<HeaderToggleBar onClick={() => this.props.toggle()} />
</HeaderSide>
);
}
}
所以应用程序以 navActive 状态为 false 开始,单击 HeaderToggleBar 元素打开和关闭导航。但是当路线改变时我需要关闭导航。我想我可以将 click 事件放在标题中的导航项上(因此单击到新页面会切换),但这似乎有点过头了。
谢谢。
【问题讨论】:
-
所以我通过将 onClick 事件应用于导航中的所有链接来“工作” - 所以它关闭导航然后导航到页面。这似乎不切实际,也不是很有未来的证据。此外,如果在导航打开时单击页面上的其他链接,它将保持打开状态。如果路线发生变化,我只需要一个导航关闭的解决方案?
标签: javascript reactjs next.js