reactjs - 为什么一个组件的模板扩展了另一个组件的模板?
问题描述
为什么AppDetail
扩展AppsList
, ofVersionDetail
扩展AppDetail
and AppsList
?
应用程序.js
function App() {
return (
<BrowserRouter>
<Route path='/' component={AppsList} />
<Route path='/:id' component={AppDetail} />
<Route path='/:id/:version_id' component={VersionDetail} />
</BrowserRouter>
);
}
export default App;
应用列表
class AppsList extends Component {
render() {
return (
<div>
<h1>Applications</h1>
</div>
);
}
}
export default AppsList;
应用详情
class AppDetail extends Component {
render() {
return (
<div>
<input type="text" id="version-id" placeholder="Enter a id of version" />
<input type="text" id="version-title" placeholder="Enter a title of version" />
<button type="submit" onClick={this.addVersion}>Add</button>
</div>
);
}
}
export default AppDetail;
解决方案
用于Switch
停止匹配任何其他路线。也用于exact
匹配确切的路径。
它正在渲染所有内容,因为模式匹配:https ://reacttraining.com/react-router/web/api/Switch
关于为什么exact
https://reacttraining.com/react-router/web/api/Route/exact-bool
您可能只使用 usingexact
但 Switch 会使其更具可读性和明确性。
function App() {
return (
<BrowserRouter>
<Switch>
<Route path='/' exact component={AppsList} />
<Route path='/:id' exact component={AppDetail} />
<Route path='/:id/:version_id' exact component={VersionDetail} />
</Switch>
</BrowserRouter>
);
}
export default App;
推荐阅读
- amazon-web-services - 如何使用空格创建 AWS Cloudwatch 日志指标过滤模式
- design-patterns - 我可以在 UML Diagrams 中对一个包内的多个组件进行分组吗?
- regex - 将 123abcf3r2e 转换为 123ABC-F3R2E
- mysql - Mysql如何提高Update查询执行速度
- bokeh - 如何使用滑块的格式参数?
- javascript - 在不使用窗口和文档对象的情况下在外部单击时隐藏 div
- javascript - 如何在 Highcharts 饼图中设置系列标签的样式?
- dhtmlx - DHTMLX 调度程序重复年度事件 - rec_type 的问题
- python - 视频系统未初始化
- reactjs - 在 React 应用程序中更新此 Redux 存储状态的正确方法是什么