2017-07-09 11 views
0

私はテンプレートセットアップの下で2つの簡単なルート、挨拶とサインアップを持つ反応ルータの基本的な例を設定しようとしています。現在、ロード時にエラーは発生しませんが、アドレスバーに入力して/signupルートにアクセスしようとすると、次のエラーが表示されます。Cannot GET /signupと理由を理解できません。基本的なルータのテンプレートの例 - URLアクセスなし

誰もがreact-router-dom v4でこの問題に遭遇しましたか?この問題を解決し、URL経由でさまざまなパスへのナビゲートを成功させる方法を提案していただきありがとうございます。

ビルドイン反応リンクコンポーネントを使用してこれらのURLパスにアクセスしようとすると、リンクが正常に機能しますが、URLでページを更新すると、再びCannot GET signupエラーが発生します。

app.js

import React from "react"; 
import NavigationBar from '../components/navigation-bar'; 

export class App extends React.Component { 
    render() { 
     return (
      <div className="container"> 
       <NavigationBar /> 
       {this.props.children} 
      </div> 
     ); 
    } 
} 

index.js

import React from 'react'; 
import ReactDOM from "react-dom"; 
import {Provider} from "react-redux"; 
import {createStore} from "redux"; 
import allReducers from "./reducers"; 

import {BrowserRouter as Router, Route, Switch} from "react-router-dom"; 
import {App} from "./components/app"; 
import {Greetings} from "./components/greetings"; 
import {Signup} from "./components/signup"; 


const store = createStore(allReducers); 

ReactDOM.render(
       <Provider store={store}> 
        <Router> 
         <App> 
          <Switch> 
           <Route exact path="/" component={Greetings} /> 
           <Route path="/signup" component={Signup} /> 
          </Switch> 
         </App> 
        </Router> 

       </Provider>, window.document.getElementById("app")); 

greetings.js

import React from "react"; 

export class Greetings extends React.Component { 
    render() { 
     return (
      <h2> 
       Greetings 
      </h2> 
     ); 
    } 
} 

signup.js

import React from "react"; 

    export class Signup extends React.Component { 
     render() { 
      return (
       <h2> 
        SIGN UP 
       </h2> 
      ); 
     } 
    } 

答えて

0

BrowserRouterウェブサーバーを使用するためには、実際のURLを処理する準備ができている必要があるため、HashRouterBrowserRouter以上にしてみてください。

import {HashRouter as Router, Route, Switch} from "react-router-dom"; 
+0

ああ、それは仕事の並べ替えのようですが、今は '#'がURLにありますが、これを回避する方法はありますか? – AnchovyLegend

+0

@AnchovyLegendこれを見てください - https://stackoverflow.com/questions/25086832/how-to-stop-in-browser-with-react-router – Arpit

+0

@AnchovyLegendこれは、HashRouterの* hash *の意味です – Li357

関連する問題