部署后反应路由器不工作
React router doesn't work after deploying
我在 Google 云平台上部署了一个 react-app:
https://just-palace-214904.appspot.com/
但是只显示第一页并且超链接不起作用。当我 运行 本地主机上的应用程序时,它们工作正常。以下是我的设置:
index.js:
import React from 'react';
import ReactDOM from 'react-dom';
import {BrowserRouter, Route, Switch} from 'react-router-dom'
import SignIn from './components/SignIn';
import SignUp from './components/SignUp';
import ForgotPass from './components/ForgotPass';
ReactDOM.render((<BrowserRouter>
<Switch>
<Route exact={true} path="/" component={SignIn}/>
<Route path="/signup" component={SignUp}/>
<Route path="/forgot" component={ForgotPass}/>
</Switch>
</BrowserRouter>), document.getElementById('root'));
我的超链接:
<a href="/forgot">Forgot password?</a><br/>
<a href="/signup">Create account</a>
我不知道为什么,我之前遇到过类似的问题,使用 HashRouter
效果很好,而不是使用 BrowserRouter
:
import { HashRouter } from 'react-router-dom'
啊,我找到了一篇解释它们之间差异的博客here。
The BrowserRouter
should be used when you have a server that will handle dynamic requests (knows how to respond to any possible URI), while the HashRouter
should be used for static websites (where the server can only respond to requests for files that it knows about).
您应该使用 Link
而不是锚标记。
改变
<a href="/forgot">Forgot password?</a><br/>
<a href="/signup">Create account</a>
到
<Link to="/forgot">Forgot Password?</Link><br/>
<Link to="/signup">Create account</Link>
Link
来自 react-router-dom
包。
我在 Google 云平台上部署了一个 react-app: https://just-palace-214904.appspot.com/
但是只显示第一页并且超链接不起作用。当我 运行 本地主机上的应用程序时,它们工作正常。以下是我的设置:
index.js:
import React from 'react';
import ReactDOM from 'react-dom';
import {BrowserRouter, Route, Switch} from 'react-router-dom'
import SignIn from './components/SignIn';
import SignUp from './components/SignUp';
import ForgotPass from './components/ForgotPass';
ReactDOM.render((<BrowserRouter>
<Switch>
<Route exact={true} path="/" component={SignIn}/>
<Route path="/signup" component={SignUp}/>
<Route path="/forgot" component={ForgotPass}/>
</Switch>
</BrowserRouter>), document.getElementById('root'));
我的超链接:
<a href="/forgot">Forgot password?</a><br/>
<a href="/signup">Create account</a>
我不知道为什么,我之前遇到过类似的问题,使用 HashRouter
效果很好,而不是使用 BrowserRouter
:
import { HashRouter } from 'react-router-dom'
啊,我找到了一篇解释它们之间差异的博客here。
The
BrowserRouter
should be used when you have a server that will handle dynamic requests (knows how to respond to any possible URI), while theHashRouter
should be used for static websites (where the server can only respond to requests for files that it knows about).
您应该使用 Link
而不是锚标记。
改变
<a href="/forgot">Forgot password?</a><br/>
<a href="/signup">Create account</a>
到
<Link to="/forgot">Forgot Password?</Link><br/>
<Link to="/signup">Create account</Link>
Link
来自 react-router-dom
包。