2016-09-30 7 views
0

私はReactを初めて利用しています。私の状況は次のようなものです:ポンド記号なしでリアクタ・ルータを作るには?

私はReactにページを持っていますが、Reactブラウザの履歴ではすべてのURLに#記号が必要です。したがって、URLは次のようになります。http://www.somedomain.com/path/#/login。このURLをコールバック用のサードパーティのURLに送信する必要があります(http://www.thirdparty.com/verify?callback=http%3A%2F%2Fwww.somedomain.com%2Fpath%2F%23%2Floginなど)。問題は、URLに#を許可しないことです。彼らが許す唯一のURLフォーマットはhttp://www.somedomain.com/path/loginなので、urlの後ろにいくつかのパラメータを追加して、最終的にはコールバックhttp://www.somedomain.com/path/login?code=something&state=somestateになります。

私はこれをどのように達成できますか? ApacheまたはNginxのURLの書き換えを含むすべての可能な解決策が受け入れられ、Reactルータソリューションに限定されません。前もって感謝します!

私のコードは以下の通りです:あなたは歴史プロバイダとしてbrowserHistoryを使用する必要があります

class App extends Component { 
    constructor(props) { 
    super(props); 
    this.state = { 
    }; 
    } 

    render() { 
    const appHistory = useRouterHistory(createHashHistory)({ queryKey: false }); 
    return (
     <Router history={appHistory}> 
     <Route path="/" component={Main}> 
      <IndexRoute component={Home} /> 
      <Route path="login" component={Login} /> 
      <Route path="mypics" component={MyPics} onEnter={requireAuth} /> 
     </Route> 
     </Router> 
    ); 
    } 
} 

答えて

1

import React from "react"; 
import ReactDOM from "react-dom"; 

import { Router, Route, browserHistory } from "react-router"; 

class App extends React.Component { 
    render() { 
     return (
      <Router history={browserHistory}> 
       <Route path="/" component={...}> 
        ... 
       </Route> 
      </Router> 
     ); 
    } 
} 

// Render the main component into the dom 
ReactDOM.render(<App />, document.getElementById("app")); 
+0

ありがとう!それが正しい方法です。しかし、私はまだハッシュヒストリーが大好きです。ハッシュヒストリーでは、私のページはサーバーにリクエストを送信しませんが、ブラウザ履歴ではサーバーにリクエストを送信します。私は個人的にそれを好まない。コールバックのために別の特別なURLを使用して、私のハッシュヒストリにリダイレクトしようとします。とにかくありがとう! –

関連する問題