2016-11-10 1 views
1

私は反応ルータを使用していますが、URLに直接行くとき以外はすべてうまくいきます。たとえば、 "/ quizreview?quizId = nAUl3DmFlX"に行くアプリケーションのリンクをクリックした場合、問題なく動作します。 ?ルータのURLに直接アクセスしていません

を取得することはできません/ quizreview quizId = nAUl3DmFlXここ

は、私のルータのコードです:

ReactDOM.render((
<Router history={browserHistory}> 
    <Route path="/" component={App}> 
     <IndexRoute component={UserQuiz} onEnter={loginRequired}/> 
     <Route path="/login" component={Login}/> 
     <Route path="/quiz/:id" component={Quiz}/> 
     <Route path="/quizreview" component={PostQuiz}/> 
     <Route path="/quizquestions/:quizId" component={QuestionForm}/> 
     <Route path="/questionreview/:questionId" component={QuestionReview}/> 
     <Route path="/noquestions" component={NoQuestionsDialog}/> 
    </Route> 
</Router> 
), document.getElementById('app')); 

私はここで何も悪いことをやっているだろうか?しかし、私はそれが言う "http://localhost:3000/quizreview?quizId=nAUl3DmFlXを" URLを入力した場合私はReact-Routerチュートリアルに従いました。うまくいきました。私は同じ指示に従ったが、この問題が発生していると思います。

+1

Reactは私の強みではありませんが、これは 'loginRequired'の背後でこれをロックしている場所で、URLに直接アクセスするとユーザーはもはや認証されず、モジュールは読み込まれなくなります。そうでない場合は、 'browserHistory'の代わりに' hashHistory'を使ってみてください。 –

答えて

0

あなたはあなたが何をするかhistoryApiFallback WebPACKの

を使用している場合は、あなたのWebPACKファイルにhistoryApiFallback: trueを持っている必要がありますbrowserHistoryでURLを直接訪問し、その後、HTML5を使用している場合は、あなたのサーバがためindex.htmlを返すように、それを作るですどんなURLにアクセスしようとしても、あなたのルートはindex.htmlを基準に設定されているので、直接URLにアクセスすることができます。

react-routerに変更してみてください。 url like

http://localhost:3000/#/quizreview?quizId=nAUl3DmFlX 
+0

ちょっとこれを少し追加してください: 'historyApiFallback'はあなたのサーバがあなたがアクセスしようとしているURLのために' index.html'を返すようにします。このように動作するサーバーを設定することができます(プロダクションで 'browserHistory'を使うために必要なことです)。 –

+0

ありがとう、それはトリックでした。 –

+0

助けてくれてうれしいです。 –

関連する問題