在我的应用程序中,..i设置路由器有问题,但是当我单击第二个链接时,两个组件同时出现。
return (
<BrowserRouter>
<div>
<div className="sidenav">
<img
src={require("../src/images/logo-light.png")}
style={{maxWidth:'20vh',maxHeight:'60vh',marginLeft:'2vh'}}
/>
<a><NavLink to="/">Home</NavLink></a>
<a><NavLink to="/function2">Function2</NavLink></a>
</div>
<div className="content" style={{minHeight:'94vh',maxHeight:'0vh'}}>
<Route
path="/"
render={() =>
<Home come={this.coming} sendname={{newname:this.state.username}}/>
}
/>
<Route path="/function2" render={() =><Fun2 />} />
</div>
</div>
</BrowserRouter>
);告诉我,我还添加了我的应用程序在这里输入图像描述的屏幕快照,问题在哪里?
发布于 2018-04-07 10:36:21
您将需要将您的<Route>封装在<Switch></Switch>中,并且可能希望将exact属性添加到索引路由中
<BrowserRouter>
<div>
<div className="sidenav">
<img src={require( "../src/images/logo-light.png")} style={{maxWidth: '20vh',maxHeight: '60vh',marginLeft: '2vh'}}/>
<a>
<NavLink to="/">Home</NavLink>
</a>
<a>
<NavLink to="/function2">Function2</NavLink>
</a>
</div>
<div className="content" style={{minHeight: '94vh',maxHeight: '0vh'}}>
<Switch>
<Route exact path="/" render={()=> <Home come={this.coming} sendname={{newname:this.state.username}}/>} />
<Route path="/function2" render={()=> <Fun2 />} />
<Switch>
</div>
</div>
</BrowserRouter>发布于 2018-04-07 10:38:05
在Reactive路由器中,您需要添加一个开关,它将只选择路径中的一个。
另外,对于根路径,您应该在道具中添加确切的,这样它就只能在该路径上匹配。
<Switch>
<Route exact path="/" render={()=> <Home come={this.coming} sendname={{newname:this.state.username}}/>} />
<Route path="/function2" render={()=> <Fun2 />} />
<Switch>还请记住排序的重要性。因此,它将选择匹配的第一条路由(这就是为什么添加道具精确的原因)。
https://stackoverflow.com/questions/49706370
复制相似问题