react-router 没有渲染任何东西
react-router is not rendering anything
我使用 create-react-app
创建了我的应用程序并尝试在其上使用 react-router
。但它根本不起作用。
这是我的 Header.js
。
import React, { Component } from 'react';
class Header extends Component {
render() {
return (
<nav>
<div className="nav-wrapper blue darken-1">
<a className="brand-logo center">Testing</a>
<div className="right">
<ul>
<li>
<a><i className="material-icons">vpn_key</i></a>
</li>
<li>
<a><i className="material-icons">lock_open</i></a>
</li>
</ul>
</div>
</div>
</nav>
);
}
}
export default Header;
我的App.js
.
import React, { Component } from 'react';
import Header from './Header';
class App extends Component {
render() {
return (
<div className="App">
<div className="Header">
<Header />
{this.props.children}
</div>
</div>
);
}
};
export default App;
还有我的 index.js
这里。
import React from 'react';
import ReactDOM from 'react-dom';
import { Router, Route, browserHistory, IndexRoute } from 'react-router';
import App from './App';
import Home from './Home';
import Login from './Login';
import Register from './Register';
ReactDOM.render((
<Router history={browserHistory}>
<Route path="/" component={App}>
<IndexRoute component={Home}/>
<Route path="/home" component={Home}/>
<Route path="/login" component={Login}/>
<Route path="/register" component={Register}/>
</Route>
</Router>),
document.getElementById('root')
);
- 不用担心
index.js
上的 Home, Login, Register
事情。他们超级好。
我是不是做错了什么?
Ho 如果你是 react-router 的 v4* 它不会那样工作你应该安装 react-router-dom 并导入它。
我就是这样做的
import {BrowserRouter, Route} from 'react-router-dom';
//modified code of yours
ReactDOM.render((
<BrowserRouter>
<div>
<Route path="/" component={App}>
<IndexRoute component={Home}/>
<Route path="/home" component={Home}/>
<Route path="/login" component={Login}/>
<Route path="/register" component={Register}/>
</Route>
</div>
</BrowserRouter>),
document.getElementById('root'));
注意:不要忘记将路由包装在包装器中,否则会抛出错误!
要设置 404 页面,只需提供另一条没有任何路径的路由 it.If 找不到任何路由,它将被渲染。
<Route component={FourOhFour} /> /* FourOhFour component as 404*/
** 奖励积分
如果你是 react-router 的新手,你可能会遇到同时渲染多条路由的问题。但是您一次只想渲染一条路线。此时。
/*Import Switch also*/
import {BrowserRouter, Route, Switch} from 'react-router-dom';
然后
/*Wrap your route with `Switch` component*/
<BrowserRouter>
<div>
<Switch>
<IndexRoute component={Home}/>
<Route path="/" component={App}/>
<Route path="/home" component={Home}/>
<Route path="/login" component={Login}/>
<Route path="/register" component={Register}/>
</Switch>
</div>
</BrowserRouter>
如果您正在使用 React Router 4,如其他评论所述,您必须使用 'react-router-dom' 才能将其导入组件。
import { BrowserRouter as Router } from 'react-router-dom'
您现在可以将任何组件作为 Router 的子组件(它必须是单个节点)。
与普通RR2-3的主要区别在于,现在每条路线都是一个简单的组件,您可以将其与其他组件放在一起。
您不再有 IndexRoute,只需按您想要的顺序放置路由即可:
<div>
<Header />
<Route path="/blabla/:bla" component={SingleBlaBla} />
<Route path="/aboutUs" exact component={AboutUs} />
<Route path="/" exact component={Home} />
<Footer />
</div>
Route 的选项、Switch、Redirect 和其他非常有用的组件的使用,有很多东西需要了解。尝试花一些时间在一些好的文档上,因为它是一个非常好的版本,它会保留一段时间。
如果你能看看这个精彩的介绍:https://egghead.io/courses/add-routing-to-react-apps-using-react-router-v4
正确的格式是
import React from 'react';
import { BrowserRouter as Router, Routes, Route, } from "react-
router-dom";
import './App.css';
import Home from './components/Pages/Home';
function App() {
return (
<>
<Router>
<Routes>
<Route exact path='/' element={<Home/>}/>
</Routes>
</Router>
</>
)}
export default App;
我使用 create-react-app
创建了我的应用程序并尝试在其上使用 react-router
。但它根本不起作用。
这是我的 Header.js
。
import React, { Component } from 'react';
class Header extends Component {
render() {
return (
<nav>
<div className="nav-wrapper blue darken-1">
<a className="brand-logo center">Testing</a>
<div className="right">
<ul>
<li>
<a><i className="material-icons">vpn_key</i></a>
</li>
<li>
<a><i className="material-icons">lock_open</i></a>
</li>
</ul>
</div>
</div>
</nav>
);
}
}
export default Header;
我的App.js
.
import React, { Component } from 'react';
import Header from './Header';
class App extends Component {
render() {
return (
<div className="App">
<div className="Header">
<Header />
{this.props.children}
</div>
</div>
);
}
};
export default App;
还有我的 index.js
这里。
import React from 'react';
import ReactDOM from 'react-dom';
import { Router, Route, browserHistory, IndexRoute } from 'react-router';
import App from './App';
import Home from './Home';
import Login from './Login';
import Register from './Register';
ReactDOM.render((
<Router history={browserHistory}>
<Route path="/" component={App}>
<IndexRoute component={Home}/>
<Route path="/home" component={Home}/>
<Route path="/login" component={Login}/>
<Route path="/register" component={Register}/>
</Route>
</Router>),
document.getElementById('root')
);
- 不用担心
index.js
上的Home, Login, Register
事情。他们超级好。
我是不是做错了什么?
Ho 如果你是 react-router 的 v4* 它不会那样工作你应该安装 react-router-dom 并导入它。
我就是这样做的
import {BrowserRouter, Route} from 'react-router-dom';
//modified code of yours
ReactDOM.render((
<BrowserRouter>
<div>
<Route path="/" component={App}>
<IndexRoute component={Home}/>
<Route path="/home" component={Home}/>
<Route path="/login" component={Login}/>
<Route path="/register" component={Register}/>
</Route>
</div>
</BrowserRouter>),
document.getElementById('root'));
注意:不要忘记将路由包装在包装器中,否则会抛出错误!
要设置 404 页面,只需提供另一条没有任何路径的路由 it.If 找不到任何路由,它将被渲染。
<Route component={FourOhFour} /> /* FourOhFour component as 404*/
** 奖励积分 如果你是 react-router 的新手,你可能会遇到同时渲染多条路由的问题。但是您一次只想渲染一条路线。此时。
/*Import Switch also*/
import {BrowserRouter, Route, Switch} from 'react-router-dom';
然后
/*Wrap your route with `Switch` component*/
<BrowserRouter>
<div>
<Switch>
<IndexRoute component={Home}/>
<Route path="/" component={App}/>
<Route path="/home" component={Home}/>
<Route path="/login" component={Login}/>
<Route path="/register" component={Register}/>
</Switch>
</div>
</BrowserRouter>
如果您正在使用 React Router 4,如其他评论所述,您必须使用 'react-router-dom' 才能将其导入组件。
import { BrowserRouter as Router } from 'react-router-dom'
您现在可以将任何组件作为 Router 的子组件(它必须是单个节点)。
与普通RR2-3的主要区别在于,现在每条路线都是一个简单的组件,您可以将其与其他组件放在一起。
您不再有 IndexRoute,只需按您想要的顺序放置路由即可:
<div>
<Header />
<Route path="/blabla/:bla" component={SingleBlaBla} />
<Route path="/aboutUs" exact component={AboutUs} />
<Route path="/" exact component={Home} />
<Footer />
</div>
Route 的选项、Switch、Redirect 和其他非常有用的组件的使用,有很多东西需要了解。尝试花一些时间在一些好的文档上,因为它是一个非常好的版本,它会保留一段时间。
如果你能看看这个精彩的介绍:https://egghead.io/courses/add-routing-to-react-apps-using-react-router-v4
正确的格式是
import React from 'react';
import { BrowserRouter as Router, Routes, Route, } from "react-
router-dom";
import './App.css';
import Home from './components/Pages/Home';
function App() {
return (
<>
<Router>
<Routes>
<Route exact path='/' element={<Home/>}/>
</Routes>
</Router>
</>
)}
export default App;