react-router v2.0 browserHistory无效

时间:2016-01-22 01:22:50

标签: javascript reactjs react-router

目前正在使用react-route v2.0。

我确信我已经找了一些东西,但我能够使hashHistory工作但是当实现browserHistory时,我得到一个404错误消息,因为我试图删除url中的hashHistory并且想知道一个解决方法生产

整个下午我一直在拔我的头发,似乎无法看到我出错的地方。

应用程序/ App.jsx

var React = require('react');
var Main = require('../components/Main');
var Home = require('../components/Home');
var Profile = require('../components/Profile');
var Router = require('react-router');
var Route = Router.Route;
var IndexRoute = Router.IndexRoute;

module.exports = (
  <Route path="/" component={Main}>
    <Route path="profile/:username" component={Profile} />
    <IndexRoute component={Home} />
  </Route>
);

应用程序/配置/ routes.jsx

public class OuterClass {
    ...
    ...
    public class InnerClass {
        ...
    }

    public static void main(String[] args) {

    }
}

这是我正在处理的回购 https://github.com/SOSANA/React.JS-Tutorials-and-Things/tree/master/github-notetaker/04-state-and-props

希望有人可以提供帮助

2 个答案:

答案 0 :(得分:4)

您需要在脚本标记中使用根相对(或绝对)URL,否则应用程序最终会在目录中请求脚本,服务器将使用(catch-all)html文件进行响应。

<div class="well"> <form class="form-horizontal" role="form" ng-controller="UpdateStatusController as statusUpdate" ng-submit="statusUpdate.updateStatus(statusUpdate.message)"> <h4>What's New</h4>{{statusUpdate.message}} <div class="form-group" style="padding:14px;"> <textarea class="form-control" ng-model= "statusUpdate.message" placeholder="Update your status"> </textarea> {{statusUpdate.message}} </div> </div> angular.module('wildfire', []).controller('UpdateStatusController',['$scope', '$http', function($scope, $http){ var updateStatusText = 'test'; this.message = updateStatusText; this.updateStatus = function(text) { var StatusObject = {}; updateStatusText = text; } }]);

答案 1 :(得分:1)

使用browserHistory在初始页面加载时提供适当的资源时,您需要另外配置服务器。

有关详细信息,请参阅https://github.com/rackt/react-router/blob/master/docs/guides/basics/Histories.md#configuring-your-server