reactjs - ReactJS - 我无法通过路由到达其他内部的组件
问题描述
我有一个具有这种结构的网站:
<Header>
<MenuPrincipal>
<Home></Home>
</MenuPrincipal>
</Header>
当我单击 Header 中的徽标时,它不起作用,什么也没有发生,我想访问 Home 组件该<Home>
组件位于<MenuPrincipal>
. <Header>
组件是父组件,如何在上面的结构中看到。我该如何解决?
import React from 'react'
import { BrowserRouter as Router, Route, Link, } from 'react-router-dom'
import Home from './Home';
import {connect} from 'react-redux'
import {bindActionCreators} from 'redux'
import { showBGImage } from './actions';
const Header = (props) => {
return (
<div className="header">
<div>
<Router>
<div>
<h1>
<Link onClick={showBGImage} className="home-link" to='/'>Mauro Bitar<br />
<small className="home-link">arquiteto</small>
</Link>
</h1>
<Route exact path='/' render={() => <Home />} />
</div>
</Router>
</div>
</div>
)
}
export default Header
解决方案
<BrowserRouter>
它更像是一个历史浏览器,你需要使用 Switch 来代替。
import { BrowserRouter as Router, Route, Link, Switch} from 'react-router-dom'
const Header = (props) => {
return (
<div className="header">
<Router>
<Switch>
<div>
<h1>
<Link onClick={showBGImage} className="home-link" to='/'>Mauro Bitar<br />
<small className="home-link">arquiteto</small>
</Link>
</h1>
<Route exact path='/' render={() => <Home />} />
</div>
</Switch>
</Router>
</div>
)
}
推荐阅读
- javascript - “未捕获的 SyntaxError:意外的标识符”错误
- java - 将java代码转换为目标C的问题
- java - 为什么我们不能直接在 Lambda 函数中调用 Thread#sleep()?
- node.js - SyntaxError:意外的令牌导入 - Node.js
- xamarin - Visual Studio 2017 15.8.4 在调试时不显示工具提示
- sql - 如何拒绝在 Firebird 中创建没有主键的表
- android - 引用 C++ 项目后,Android 应用不再从 Visual Studio 启动
- typescript - 使用Angular 6从数组中查找元素并在输入(或选择)中显示为列表(一一)的最佳方法
- liquid - 如何在条件语句中使用液体标签
- r - 存储 do.call("grid.arrange") 输出而不打印