我正在尝试实现一个系统,当单击导航栏中的项目时,它会在屏幕上加载一个新组件。我遇到了一个问题,使它成为一个新的 URL 并保持我的状态。让我澄清一下。
这是我的导航栏代码:
<Nav pullRight activeKey="1" onSelect={k => this.handleSelect(k)}>
<NavItem eventKey={1} href={'/component1'}>
Component 1
</NavItem>
<NavItem eventKey={2} href={'/component2'}>
Component 2
</NavItem>
</Nav>
这是我的句柄选择代码:
handleSelect(eventKey, event) {
this.setState({
componentToLoad: eventKey
});
event.preventDefault();
}
在我的渲染中,我这样做:
render() {
if(this.state.componentToLoad === 'component1'){
return (<Component1/>);
} else if(this.props.componentToLoad === 'component2'){
return (<Component2/>);
}
我遇到的问题是因为 href 添加到页面重新加载的 URL 并且我失去了我的状态,所以它总是加载组件 1,因为我在构造函数中将它设置为那个。如果我删除 href 它可以工作,但 URL 不是我想要的。
如何让它加载我想要的组件、添加到 URL 并保持状态?
谢谢