React router не работает после развертывания - PullRequest
0 голосов
/ 30 августа 2018

Я развернул реагирующее приложение на Google Cloud Platform: https://just -palace-214904.appspot.com /

Однако отображается только первая страница, а гиперссылки не работают. Они работали нормально, когда я запускал приложение на localhost. Ниже моя установка:

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>

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Вы должны использовать 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.

Вот рабочий пример. https://codesandbox.io/s/qz4l7nzv09

0 голосов
/ 30 августа 2018

Я не знаю почему, аналогичная проблема, с которой я столкнулся ранее и использование HashRouter, работала нормально, а не BrowserRouter:

import { HashRouter } from 'react-router-dom'

Ах, я нашел блог, объясняющий различия между ними здесь .

BrowserRouter следует использовать, когда у вас есть сервер, который будет обрабатывать динамические запросы (знает, как реагировать на любой возможный URI), тогда как HashRouter следует использовать для статических веб-сайтов (где сервер может отвечать только на запросы на файлы, о которых он знает).

...