直接转到路由器URL无效

时间:2016-11-10 10:41:17

标签: javascript reactjs react-router

我使用的是react-router,除了直接转到网址外,一切正常。例如,如果我点击应用中的链接进入" / quizreview?quizId = nAUl3DmFlX"它没有问题。但是,如果我输入了网址" http://localhost:3000/quizreview?quizId=nAUl3DmFlX"它说:

无法获得/ 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'));

我在这里做错了吗?我按照React-Router教程进行了操作并且工作正常,我相信我遵循了相同的说明,但是出现了这个问题。

1 个答案:

答案 0 :(得分:0)

如果您使用的是HTML5,那么要直接使用browserHistory访问URL,如果您使用的是webpack,则需要在您的webpack文件中使用historyApiFallback: true

historyApiFallback的作用是使您的服务器返回index.html以查找您尝试访问的任何URL,因为您的路由随后是针对index.html配置的,因此您可以访问任何直接路由网址

或者您可以尝试替代,即history={hashHistory}react-router一起使用,然后访问您的网址

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