我在学习 应对 </跨度> 路由和我正在看这个教程:
https://www.youtube.com/watch?v=1iAG6h9ff5s
它的2016年教程,所以我想改变了一些因为’ 应对 </跨度> -router’不再工作……而且我应该使用’ 应对 </跨度> -router-DOM”。
我发现我必须卸载’历史’和’ 应对 </跨度> -router’并使用’ 应对 </跨度> -router-dom’相反,但是当我改变它时它没有按预期工作。
如何 …
看完视频后,你可能想要这样的东西。起初这不是那么容易理解,但在看到其中一些之后你会消化它。首先你渲染你的 Layout 一个人 Route 。然后在这个顶级路线中,您使用其他 Route 设置组件。
Layout
Route
我们经常使用 exact 像一个顶级根的道具 / 。如果您没有像这样设置您的应用程序,例如您的所有路线都在您的顶部 Router 配置,然后使用类似的路由 /featured 我们必须拥有 exact 支柱。如果我们不使用它 Router 总是打 / 路径,我们总是看到顶级组件。
exact
/
Router
/featured
但是,在您的情况下,您希望在顶级组件中路由其他组件。所以,我们放弃了 exact 道具在这里。
你也可以使用 push 改变历史。
push
的 更新 强>
在想到名为“精选”的导航按钮后,我想你想要的 Featured 组件在此处呈现为默认组件。当再次按下按钮时,您将返回 Featured 一。我根据这个改变了代码。在这个版本中,我们添加一个 / 路线 Layout 并指出它 Featured 。所以,当我们来到这里时它会被渲染出来。但是,我们使用 exact 支持这里,因为我们也想要“/ featured”,“/ archives”和“/ settings”等路线。
Featured
export default class Layout extends React.Component { navigate = () => this.props.history.push("/"); render() { return ( <div> <h1>Welcome</h1> <Link to="/featured">Featured</Link> <Link to="/archives">Archives</Link> <Link to="/settings">Settings</Link> <br /> <button onClick={this.navigate}>Featured</button> <Route exact path="/" component={Featured} /> <Route path="/featured" component={Featured} /> <Route path="/archives" component={Archives} /> <Route path="/settings" component={Settings} /> <div> Some other info. </div> </div> ); } } const app = document.getElementById('root'); ReactDOM.render( <Router> <Switch> <Route path="/" component={Layout} /> </Switch> </Router>, app);