这是我的 index.js 文件
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter } from 'react-router-dom'
import App from './components/App';
ReactDOM.render((
<BrowserRouter>
<App />
</BrowserRouter>
), document.getElementById('root')
);
这是 App.js
import React, { Component } from 'react';
import Main from './Main';
class App extends Component {
render() {
return (
<div>
<Main />
</div>
);
}
}
export default App;
这是我的 Main.js 文件
import React, { Component } from 'react';
import { Switch, Route } from 'react-router-dom';
import Home from './Home';
import AdminHome from './AdminHome';
class Main extends Component {
render() {
return (
<Switch>
<Route exact path='/admin' component={AdminHome}/>
<Route exact path='/' component={Home}/>
</Switch>
);
}
}
export default Main;
路由器没有路由到/admin 但它正在路由到/,当我运行应用程序并点击 url'localhost:8080/admin'时它说白标签错误。
我完全混淆了如何使用反应路由器和控制器,任何人都可以建议我的方式。
我只是通过为我的 spring 启动控制器中的每个请求返回index.html来实现路由。
1 回答
我使用过滤器将请求转发到 index.html,如果它不是静态资源或不是 api 调用。
如果它们在/resources/static 中,则 Spring 引导会自动为静态资源提供服务。我将它们保存在特定文件夹/resources/static/ rct中以便于过滤。 (我不希望头痛与正则表达式)
index.html 反应应用的路径:
现在过滤器 RedirectToIndexFilter.java
控制器到服务器 index.html
控制器到服务器 api 调用
所以任何不是 api 或 static 的调用都会被转发到 index。通过转发,您可以根据需要保留网址,但是转发到 index.html