我有一个应聘申请。
我在布线组件时遇到问题
index.js
import React from "react";
import ReactDOM from "react-dom";
import App from './app';
ReactDOM.render(
<App/>,
document.getElementById("root")
);
app.jsx
我在这里路由2组件。登录名和主要组件。在主要组件中,有许多路由器将用于仪表板。
我的问题:在<Switch>
中,第一个<Route>
可以渲染,但是如果我在url中进行硬编码,则不能从第二个路由器渲染
import React, { Component } from 'react';
import {
BrowserRouter as Router,
Route,
Link,
Switch
} from 'react-router-dom';
import Login from './login';
import Main from './main';
import createBrowserHistory from 'history/createBrowserHistory';
const customHistory = createBrowserHistory();
class App extends Component {
constructor(props) {
super(props);
window.token = '';
}
render() {
return <div>
<Router>
<Switch>
<Route to="/login" component={Login} exact />
<Route to="/main" component={Main} exact/>
</Switch>
</Router>
</div>;
}
}
export default App;
main.jsx
import React, {Component} from 'react';
import ReactDOM from "react-dom";
import { HashRouter, Route, Switch } from "react-router-dom";
import indexRoutes from "routes/index.jsx";
import "bootstrap/dist/css/bootstrap.min.css";
import "./assets/css/animate.min.css";
import "./assets/sass/light-bootstrap-dashboard.css?v=1.2.0";
import "./assets/css/demo.css";
import "./assets/css/pe-icon-7-stroke.css";
import Login from './login';
class Main extends Component {
constructor(props) {
super(props);
}
render() {
return <HashRouter>
<Switch>
{indexRoutes.map((prop, key) => {
return <Route to={prop.path} component={prop.component} key={key} />;
})}
</Switch>
</HashRouter>;
}
}
export default Main;
答案 0 :(得分:3)
使用
<Route path="/login" component={Login} exact />
使用to
代替path
答案 1 :(得分:1)
<Route path="/login" component={Login} />
<Route path="/main" component={Main} exact/>
使用由 To
插入的 Path答案 2 :(得分:0)
请勿在主路线中使用确切属性,如下所示。
class App extends Component {
render() {
return <div>
<Router>
<Switch>
...
<Route to="/main" component={Main} />
</Switch>
</Router>
</div>;
}
}
答案 3 :(得分:0)
您的代码有两个问题
首先在您的app.jsx
文件中
<Switch>
<Route
to="/login" // <== should be path="/login"
component={Login}
exact
/>
<Route
to="/main" // <== should be path="/main"
component={Main}
exact // <== remove exact prop for the nested routes to work
/>
</Switch>
to
道具实际上属于<Link/>
提供的react-router
组件,而不是<Route />
组件,它应该是path
道具。
如果要在<Route />
组件中渲染子路线,则我们永远不要在父exact
组件上使用<Route />
prop。
第二次在您的main.jsx
文件中:
indexRoutes.map((prop, key) => {
return (
<Route
to={prop.path} // <== should be path={prop.path}
component={prop.component}
key={key} />;
);
})
重新将to
道具更改为path
道具。